Se identifican 10 paquetes maliciosos en el registro npm que imitaban nombres de librerías populares mediante typosquatting. Estos paquetes fueron descargados casi 10,000 veces antes de su eliminación y ocultaban malware de robo de información dirigido específicamente a desarrolladores.
Vector de Typosquatting en npm: Ataque a la Cadena de Suministro
El objetivo de esta campaña no es el usuario final, sino el entorno del desarrollador, buscando robar los tokens de acceso que permiten infiltrarse en pipelines y sistemas de producción.
Mecanismo del Robo de Credenciales
- Typosquatting: El atacante publica paquetes con nombres muy similares a librerías legítimas y populares (ej., “ethers-js” vs “ethersjs “). Esto atrae instalaciones involuntarias debido a errores tipográficos o descubiertos.
- Script postinstall: Cuando un desarrollador instala el paquete, el código malicioso se ejecuta automáticamente como parte del script postinstall.
- Extracción de secretos: El malware realiza un escaneo automático del entorno del desarrollador (revisar variables de entorno, tokens, sistemas de CI/CD) para robar credenciales, tokens de autenticación de npm/GitHub o claves de acceso a la nube.
Por Qué el Riesgo es Máximo
- Compromiso en Cascada: Aunque el número de instalaciones directas es pequeño, el ataque apunta a desarrolladores, lo que significa que un token robado puede permitir al atacante infiltrarse en pipelines, modificar dependencias o comprometer entornos de producción indirectamente (ataque a la cadena de suministro).
- Superficie de Ataque Ampliada: La instalación de librerías se realiza con alta frecuencia en entornos de desarrollo, que a menudo están fuera del control estricto del equipo de seguridad (dev machines).
- Desarrollador como Vector: La responsabilidad recae en gran medida en los desarrolladores individuales (instalando dependencias sin supervisión), lo que exige un cambio cultural hacia el desarrollo seguro (DevSecOps).
Recomendaciones
- Prácticas de Desarrollo Seguro (Para Desarrolladores)
- Doble Verificación: Verifique siempre el nombre exacto del paquete antes de instalar. Prefiere copiar el nombre desde la página oficial npm o repositorio comprobado.
- Auditoría de Scripts: Revisar los scripts postinstalloinstall de las nuevas dependencias cuando se usan en un entorno sensible. Si el script hace algo inusual (leer variables de entorno, enviar datos), alertar.
- Segmentación de Entornos: Las máquinas de desarrollo deben tener privilegios limitados. No deben tener tokens persistentes de CI/CD o nube y deben usar cuentas distintas de las de producción.
- Controles de Seguridad Automatizados (Para DevSecOps)
- Escaneo de Dependencias: Implementar escaneo automático de dependencias (SBOM) y configurar alertas cuando se instalen paquetes nuevos o de baja reputación.
- Auditoría de Cuentas: Auditar las cuentas de mantenedores de dependencias propias e internas, forzando la Autenticación Multifactor (MFA) para npm/GitHub.
- Privilegios Mínimos en Pipelines: Aplicar la política de privilegio mínimo en todos los pipelines: los tokens utilizados para publicación de paquetes o CI deben tener permisos mínimos necesarios y deben ser rotados periódicamente.
- Monitoreo de Tokens: Monitorizar registros para detectar actividad inusual en GitHub Actions o creación de forks o sucursales desconocidas originadas por tokens de desarrollo.




