Un ataque a gran escala a la cadena de suministro de software ha puesto en riesgo la seguridad de millones de desarrolladores y usuarios. Ciberdelincuentes lograron comprometer cuentas de mantenedores de paquetes npm, inyectando malware en librerías ampliamente utilizadas que acumulan más de 2.6 mil millones de descargas semanales. El ataque se llevó a cabo mediante un correo de phishing sofisticado dirigido a los mantenedores, con el objetivo de secuestrar sus cuentas y publicar versiones maliciosas de los paquetes.
Josh Junon, conocido como qix, mantenedor de varios paquetes npm, confirmó que recibió un correo electrónico proveniente de un dominio falso, npmjs[.]help, diseñado para imitar al sitio oficial de npm. El mensaje amenazaba con bloquear su cuenta si no actualizaba sus credenciales de autenticación de dos factores. Al acceder al enlace, los atacantes inyectaron código malicioso en paquetes populares como debug, que acumula 357.6 millones de descargas semanales, y otros paquetes críticos como chalk, ansi-styles, color-convert y slice-ansi.
Cómo funciona el malware
El código malicioso no se limita a afectar el paquete en sí, sino que actúa directamente sobre los navegadores web de los usuarios. Una vez instalado, el malware intercepta transacciones de criptomonedas—incluyendo Ethereum, Bitcoin, Solana, Tron, Litecoin y Bitcoin Cash—y redirige los pagos hacia direcciones controladas por los atacantes. Esto se logra manipulando funciones JavaScript como fetch, XMLHttpRequest y las APIs de wallets en el navegador, logrando que los usuarios crean que sus transacciones se completan de manera normal.
Según Aikido Security, el malware opera a múltiples niveles: modifica contenido web, altera llamadas a APIs y manipula la información que las aplicaciones creen que están firmando, aumentando significativamente su peligrosidad.
Alcance del ataque
Los paquetes afectados son algunos de los más descargados en la historia de npm, con millones de descargas semanales, lo que convierte el ataque en un riesgo masivo para toda la comunidad de desarrollo de JavaScript. Los expertos advierten que incluso desarrolladores que instalen paquetes como dependencias transitorias pueden verse comprometidos si su package-lock.json se genera durante el período en que los paquetes fueron manipulados.
El malware también se centra en interceptar tráfico web y monitorear transacciones de criptomonedas, lo que lo convierte en un ataque extremadamente lucrativo y silencioso, difícil de detectar para usuarios y desarrolladores.
Medidas de seguridad recomendadas
- Actualizar todas las dependencias de manera constante, verificando versiones seguras de los paquetes.
- Habilitar autenticación de dos factores (2FA) en cuentas de npm.
- Revisar transacciones de criptomonedas y movimientos sospechosos de fondos.
- Evitar instalar paquetes de fuentes no verificadas o desconocidas.
- Seguir las recomendaciones de npm y proveedores de seguridad para mitigar riesgos de la cadena de suministro.
Este ataque se suma a una serie de incidentes recientes que afectan librerías JavaScript ampliamente utilizadas. En julio, los atacantes comprometieron el paquete eslint-config-prettier, con más de 30 millones de descargas semanales, y en marzo, diez librerías npm fueron transformadas en info-stealers.
Los expertos advierten que la seguridad de la cadena de suministro de software es cada vez más crítica, ya que los atacantes apuntan a paquetes populares para maximizar el impacto de sus ataques y generar ganancias mediante el robo de criptomonedas o datos confidenciales.
El incidente resalta la importancia de implementar prácticas de seguridad robustas, tanto para desarrolladores como para empresas que dependen de paquetes npm en sus aplicaciones web y móviles.