Una campaña activa de malware ha sido descubierta por investigadores, explota las dependencias invisibles dentro del ecosistema npm para distribuir malware. Los atacantes publican paquetes utilitarios con dependencias secundarias que son difíciles de detectar en una inspección superficial de package.json, pero que cargan código malicioso una vez instaladas.
Dependencias Invisibles: Ataque Silencioso a Desarrolladores
Esta campaña representa una evolución en los ataques a la cadena de suministro, ya que utiliza malware de robo de información dirigido a desarrolladores y sus entornos de compilación.
Mecanismo de Infiltración
- Paquetes Señuelo: Los atacantes publican paquetes que parecen utilitarios menores, con pocas descargas y, por lo tanto, con un escrutinio limitado.
- Dependencia oculta: El paquete incluye una dependencia secundaria oculta o poco visible (ej., con nombres genéricos o confusos) que, a su vez, contiene el payload malicioso.
- Ejecución Silenciosa: Cuando el desarrollador instala la librería, la dependencia oculta se instala automáticamente. Su script de postinstallo preinstallse ejecuta para examinar el entorno, buscar tokens, claves o variables de entorno y exfiltrarlas.
- Persistencia: Algunos de estos paquetes también instalan módulos de persistencia, como modificaciones automáticas a GitHub Actions o al pipeline de CI/CD.
Riesgo Amplificado en el Proceso de Construcción
- Propagación: Al apuntar a desarrolladores, el impacto puede propagarse a Múltiples proyectos y entornos de producción. Los tokens robados (npm, GitHub, cloud) permiten al atacante infiltrarse en pipelines y comprometer sistemas de producción indirectamente.
- Fallo de Auditoría: La técnica es más silenciosa que el typosquatting porque muchas herramientas de auditoría solo revisan las dependencias directas, fallando en detectar las dependencias de segundo nivel o aquellas activadas dinámicamente.
- Vector de Build: El entorno de construcción (build) se convierte en un vector de compromiso directo de la cadena de suministro.
Recomendaciones
- Manual de Prácticas de Desarrollo y Auditoría
- Revisión Profunda de Dependencias: Verificar que las dependencias instaladas no tengan nombres ‘raros’ o poco explicados. Utilizar herramientas de análisis de dependencias que muestren el árbol completo, incluyendo dependencias transitivas.
- Auditoría de Scripts: Antes de instalar una nueva dependencia en pipeline o producción, revise su package.jsony los scripts preinstall/postinstall. Si un script realiza acciones inusuales (leer variables de entorno, networking), debe ser alertado.
- Reputación: Evitar depender de librerías de baja reputación, con pocas descargas o sin Autenticación Multifactor (MFA) para el mantenedor.
- Controles Automatizados y Segmentación (DevSecOps)
- Escaneo en CI/CD: Integrar escaneo automático en CI/CD para detectar paquetes con scripts de instalación o dependencias específicas.
- Seguridad de Credenciales: Asegurar que las credenciales (tokens npm, GitHub, CI/CD) no residen en entornos de desarrollo o estaciones de trabajo. Utilizar bóvedas y variables de entorno seguras y rotarlas periódicamente.
- Segmentación de Ambientes: Separar claramente desarrollo, construcción y producción. Limitar el acceso de un paquete instalado en desarrollo a tuberías o credenciales de producción.
- Auditoría de Tokens: Auditar los tokens y accesos de los desarrolladores periódicamente y habilitar MFA para todas las cuentas de mantenimiento.




