Libera tu mente y alcanza tus metas
Secuestran paquetes NPM con 2,6 mil millones de descargas semanales en un ataque a la cadena de suministro (ACTUALIZADO)
Secuestran paquetes NPM con 2,6 mil millones de descargas semanales en un ataque a la cadena de suministro (ACTUALIZADO)

Secuestran paquetes NPM con 2,6 mil millones de descargas semanales en un ataque a la cadena de suministro (ACTUALIZADO)

En lo que se considera el mayor ataque a la cadena de suministro de la historia, los atacantes inyectaron malware en paquetes NPM con más de 2,6 mil millones de descargas semanales tras comprometer la cuenta de un mantenedor en un ataque de phishing.

Resumen de lo sucedido

Según informa Nodejs, en julio, Socket advirtió sobre una campaña de phishing dirigida a los editores de paquetes NPM. Lamentablemente, un prolífico autor de paquetes (como DuckDB, que explica cómo les afectó el ataque) fue víctima del engaño, lo que provocó que algunos paquetes populares se vieran comprometidos.

  • Los desarrolladores notaron errores de compilación extraños, como que la búsqueda no estaba definida y, al inspeccionar el código fuente, encontraron una ofuscación importante que ocultaba funciones cifradas.
  • El dominio de phishing se registró tan solo tres días antes del ataque.
  • Una vez que obtuvieron acceso, actuaron con rapidez y las versiones maliciosas se lanzaron en cuestión de horas.
  • 18 paquetes core de NPM fueron modificados, incluyendo Chalk, Debug, Strip-Ansi, Color-Convert, Error-ex y Ansi-Styles (ver la lista completa más abajo).
  • Estos paquetes se encuentran en el interior de la mayoría de las aplicaciones web, por lo que su impacto es peligroso.
  • El payload inyectado (sample) es un programa para robar criptomonedas mediante el intercambio pasivo de direcciones e intercepta las transacciones en vivo antes de firmarlas.
  • El malware utiliza el algoritmo Levenshtein para reemplazar la dirección del monedero por una visualmente similar.
  • Por ahora solo ha habido movimientos pequeños (menos de USD 1.000) en las billeteras.
  • El malware utiliza direcciones de billeteras criptográficas en varias cadenas, incluidas ETH, BTC legacy, BTC segwit, TRON, LTC, BCH y SOL.

Detalles

Josh Junon (qix), el mantenedor del paquete cuyas cuentas fueron pirateadas en este ataque a la cadena de suministro, confirmó el incidente hoy mismo, afirmando estar al tanto de la vulneración y añadiendo que el correo electrónico de phishing provenía de support@npmjs[.]help, un dominio que aloja un sitio web que suplanta el dominio legítimo npmjs.com.

En los correos electrónicos, los atacantes amenazaron con bloquear las cuentas de los mantenedores afectados el 10 de septiembre de 2025, como táctica intimidatoria para que hicieran clic en el enlace que los redirigía a los sitios de phishing. 

Los atacantes atacaron a otros desarrolladores y mantenedores de paquetes utilizando el mismo correo electrónico, según informaron quienes recibieron el mensaje de phishing. BleepingComputer descubrió que la página de ayuda también incluye un formulario de inicio de sesión que extrae las credenciales introducidas a la siguiente URL:

https://websocket-api2[.]publicvm.com/images/jpg-to-png.php?name=[name]&pass=[password]

Desde que se detectó el incidente, el equipo de NPM ha eliminado algunas de las versiones maliciosas publicadas por los atacantes, incluida la del paquete de depuración, que se descarga 357,6 millones de veces por semana.

Ataque a la cadena de suministro

Según Aikido Security, que analizó el ataque a la cadena de suministro, los actores de amenazas actualizaron los paquetes tras tomar el control, inyectando código malicioso que actúa como un interceptor basado en navegador en los archivos index.js, capaz de secuestrar el tráfico de red y las API de las aplicaciones.

El código malicioso solo afecta a quienes acceden a las aplicaciones comprometidas a través de la web, monitoreando direcciones de criptomonedas y transacciones que luego se redirigen a direcciones de billetera controladas por el atacante. Esto provoca que los atacantes secuestren la transacción en lugar de enviarla a la dirección deseada.

El malware funciona inyectándose en el navegador web y monitoreando direcciones o transferencias de billeteras de Ethereum, Bitcoin, Solana, Tron, Litecoin y Bitcoin Cash. En las respuestas de la red con transacciones de criptomonedas, reemplaza los destinos con direcciones controladas por el atacante y secuestra las transacciones antes de que se firmen.

Los paquetes pirateados hasta la fecha acumulan más de 2.600 millones de descargas semanales:

  • ansi-regex - 6.2.1
  • ansi-styles - 6.2.2
  • backslash - 0.2.1
  • chalk - 5.6.1
  • chalk-template - 1.1.1
  • color - 5.0.1
  • color-convert - 3.1.1
  • color-name - 2.0.1
  • color-string - 2.1.1
  • coveops/abi - 2.0.1
  • debug - 4.4.2
  • duckdb - 1.3.3
  • duckdb/duckdb-wasm - 1.29.2
  • duckdb/node-api- 1.3.3
  • duckdb/node-bindings - 1.3.3
  • error-ex - 1.3.3
  • has-ansi - 6.0.1
  • is-arrayish - 0.3.3
  • prebid - 10.9.2
  • prebid-universal-creative - 1.17.3
  • prebid.js - 10.9.2
  • proto-tinker-wc - 0.1.87
  • proto-tinker-wc - 1.8.7
  • simple-swizzle - 0.2.3
  • slice-ansi - 7.1.1
  • strip-ansi - 7.1.1
  • supports-color - 10.2.1
  • supports-hyperlinks - 4.1.1
  • wrap-ansi - 9.0.1
"Los paquetes se actualizaron para incluir un fragmento de código que se ejecutaría en el cliente de un sitio web, interceptando silenciosamente la actividad de criptomonedas y web3 en el navegador, manipulando las interacciones de la billetera y reescribiendo los destinos de pago para que los fondos y las aprobaciones se redirijan a cuentas controladas por el atacante sin ninguna señal evidente para el usuario", declaró Charlie Eriksen, investigador de seguridad de Aikido.

Lo que lo hace peligroso es que opera en múltiples capas: altera el contenido que se muestra en los sitios web, manipula las llamadas a la API y lo que las aplicaciones de los usuarios creen que están firmando.

Si bien se trata de un ataque a la cadena de suministro, Andrew MacPherson, ingeniero principal de seguridad de Privy, explicó que existen criterios específicos que deben cumplirse para que una aplicación se vea afectada, lo que reduce significativamente el impacto. Estos incluyen:

  • Una nueva instalación entre las 9:00 a. m. y las 11:30 a. m. ET, cuando se comprometieron los paquetes;
  • La creación de Package-lock.json durante ese tiempo;
  • Paquetes vulnerables en dependencias directas o transitorias;

Este ataque a la cadena de suministro sigue a una serie de ataques similares dirigidos a desarrolladores de varias bibliotecas de JavaScript conocidas en los últimos meses.

Por ejemplo, en julio, los atacantes comprometieron eslint-config-prettier, un paquete con más de 30 millones de descargas semanales, mientras que en marzo, otras diez bibliotecas NPM ampliamente utilizadas fueron secuestradas y convertidas en ladrones de información.

Tanto el ataque de phishing como el malware inyectado ilustran cómo el navegador web se ha convertido en una superficie de ataque masiva para robar credenciales, modificar el tráfico y vulnerar las redes.

Este ataque ha sido similar a caso XZ Utils. Investigadores de varias empresas de seguridad describieron la vulneración como el mayor ataque a NPM registrado debido a su potencial magnitud. Afortunadamente, las acciones técnicas del atacante alertaron a otros desarrolladores.

"Los atacantes hicieron un mal uso de un ofuscador ampliamente conocido, lo que permitió su detección inmediata poco después de la publicación de las versiones maliciosas", declaró Andrey Polkovnichenko, investigador de seguridad de JFrog.

Lecciones aprendidas

Los riesgos que presenta esta vulnerabilidad trascienden el robo inmediato de criptomonedas. Una vez que el código malicioso se integra en paquetes confiables, los atacantes obtienen poderosas vías para una explotación más profunda:

  • Robo de secretos: Se pueden obtener claves API, tokens y credenciales confidenciales.
  • Puertas traseras persistentes: Los actores maliciosos pueden establecer puntos de apoyo para futuros ataques, mucho después de la vulnerabilidad inicial.
  • Infiltración más amplia: Los paquetes comprometidos pueden servir como plataforma de lanzamiento para que los adversarios se muevan lateralmente dentro de las organizaciones.

Este incidente destaca lecciones importantes tanto para los desarrolladores que publican paquetes como para las empresas que los consumen.

Para los desarrolladores, las conclusiones clave incluyen:

Reconocer que los encargados del mantenimiento son objetivos de alto valor. Los atacantes se centran cada vez más en proyectos populares pero con recursos limitados, sabiendo que una sola cuenta comprometida les otorga un alcance masivo.

Proteger las credenciales de publicación. Habilitar la autenticación multifactor (MFA), rotar tokens regularmente y usar administradores de hardware o contraseñas seguros son pasos esenciales para proteger las cuentas del robo de identidad.

Para las empresas, las lecciones se extienden más allá:

Mantener la visibilidad de las dependencias. Los SBOM y el análisis de composición de software (SCA) son fundamentales para identificar rápidamente si sus aplicaciones dependen de paquetes comprometidos.

Para los equipos de seguridad y desarrollo, la medida más urgente es revisar sus listas de materiales de software (SBOM) de inmediato. Al comparar las SBOM con las versiones comprometidas conocidas, las organizaciones pueden identificar rápidamente si están en riesgo. Cualquier sistema que incluya estos paquetes debe considerarse potencialmente comprometido y remediarse como corresponde.

Asumir la vulnerabilidad donde existan versiones afectadas. Cualquier máquina que ejecute paquetes afectados debe considerarse potencialmente vulnerable, y se deben aplicar los procedimientos de respuesta a incidentes correspondientes.

La visibilidad es fundamental para la resiliencia en la cadena de suministro de software. Las organizaciones necesitan saber exactamente qué componentes se utilizan en sus aplicaciones para responder rápidamente cuando se produce una vulnerabilidad. Prácticas como la gestión de SBOM y SCA proporcionan esa visibilidad, permitiendo a los equipos determinar de inmediato si se han visto afectados cuando surgen incidentes como este. 

Si bien la oleada inicial del ataque fue prácticamente neutralizada, los investigadores advierten que otros desarrolladores de NPM fueron blanco de la misma campaña de phishing.

Detección de paquetes afectados