Investigadores de Sonatype han descubierto una sofisticada campaña de ciberataques dirigida a paquetes npm ampliamente utilizados en el ecosistema JavaScript. Los atacantes han conseguido infiltrar código malicioso en diez paquetes, principalmente relacionados con operaciones criptográficas, algunos de los cuales han estado en activo durante casi una década.
Anatomía del Ataque y Alcance del Compromiso
El paquete más crítico afectado es country-currency-map, que registra miles de descargas semanales. Los atacantes implementaron su código malicioso mediante dos scripts ofuscados: /scripts/launch.js y /scripts/diagnostic-report.js, que se ejecutan automáticamente durante la instalación. Estos componentes maliciosos están diseñados para extraer información sensible como variables de entorno, claves API, tokens de acceso y claves SSH, transmitiendo posteriormente estos datos a servidores controlados por los atacantes.
Vector de Ataque y Metodología
El análisis técnico realizado por Sonatype sugiere que los atacantes emplearon la técnica de credential stuffing para comprometer múltiples cuentas de desarrolladores. Esta metodología aprovecha credenciales filtradas en brechas de datos anteriores para realizar intentos masivos de acceso. La ausencia de indicadores de compromiso en los repositorios GitHub asociados y la simultaneidad de los ataques respaldan esta hipótesis.
Impacto y Medidas de Mitigación
A pesar de la implementación de autenticación de dos factores obligatoria para paquetes npm populares desde 2022, la mayoría de los paquetes comprometidos continúan disponibles con código malicioso. El mantenedor de country-currency-map ha actuado rápidamente revocando la versión maliciosa 2.1.8 y recomendando el uso de la versión segura 2.1.7.
Este incidente destaca la importancia crítica de implementar prácticas robustas de seguridad en el desarrollo de software. Se recomienda a los desarrolladores: realizar auditorías regulares de dependencias, implementar autenticación de dos factores en todas las cuentas, utilizar gestores de contraseñas seguros y establecer procesos de verificación de integridad para paquetes de terceros. La monitorización continua de las dependencias y la actualización inmediata ante vulnerabilidades conocidas son fundamentales para mantener la seguridad de los proyectos de desarrollo.