TIEMPO DE LECTURA: 14 min

NPM Hack: 2.6B Paquetes en Peligro

Foto de Robinson Lalos
Robinson Lalos
Editor Senior
NPM Hack: 2.6B Paquetes en Peligro

18 paquetes npm comprometidos con malware para robar criptomonedas. El mayor ataque a la cadena de suministro JavaScript.

Logos de GitHub y npm sobre fondo rojo

El 8 de septiembre de 2025, el mundo del desarrollo web se estremeció ante lo que se ha convertido en el mayor ataque a la cadena de suministro de JavaScript hasta la fecha. Dieciocho paquetes populares de npm, con más de 2.6 mil millones de descargas semanales combinadas, fueron comprometidos con código malicioso diseñado para robar criptomonedas.

Un ataque sin precedentes

Lo que hace particularmente alarmante este incidente es la escala y la sofisticación del ataque. Los paquetes afectados, incluyendo nombres tan conocidos como chalk, debug y ansi-styles, forman parte fundamental del ecosistema JavaScript y son utilizados por millones de desarrolladores en todo el mundo. Un compromiso a esta escala podría haber afectado a miles de millones de usuarios finales a través de aplicaciones y sitios web.

El ataque fue detectado y contenido rápidamente gracias a la vigilancia de Aikido Security, una firma belga especializada en seguridad de código abierto. Sin embargo, el incidente expone vulnerabilidades críticas en nuestra dependencia del software de código abierto y la cadena de suministro digital que sustenta gran parte de nuestra economía y sociedad.

Este artículo examina en detalle cómo ocurrió el ataque, qué paquetes fueron afectados, cómo funcionaba el código malicioso, quién podría estar detrás y qué lecciones podemos aprender para fortalecer la seguridad de nuestra infraestructura digital.

Detalles del Ataque: ¿Cómo Ocurrió?

Ilustración de diferentes tipos de ciberataques

El ataque comenzó con una campaña de phishing dirigida específicamente a Josh Junon, un desarrollador responsable del mantenimiento de varios paquetes npm muy populares. Los atacantes enviaron un correo electrónico suplantando al equipo de soporte de npm, informando que necesitaba actualizar sus credenciales de autenticación de dos factores (2FA).

Ingeniería social sofisticada

El correo electrónico utilizaba el dominio npmjs.help, que imitaba convincentemente al sitio legítimo de npm. Los atacantes habían registrado este dominio solo dos días antes del ataque, mostrando una planificación cuidadosa y un conocimiento profundo de la psicología de los desarrolladores.

El mensaje creaba urgencia al amenazar con bloquear la cuenta del desarrollador si no actualizaba sus credenciales antes de una fecha límite específica. Esta táctica basada en el miedo aumentó significativamente las posibilidades de éxito del ataque.

El proceso de compromiso

Una vez que Junon hizo clic en el enlace del correo electrónico, fue dirigido a un sitio de phishing que imitaba perfectamente la página de inicio de sesión de npm. Allí, introdujo sus credenciales y el token de un solo uso para su autenticación de dos factores, que fue interceptado inmediatamente por los atacantes.

Con acceso a la cuenta de npm de Junon, los atacantes cambiaron el correo electrónico asociado a la cuenta, bloqueando efectivamente al legítimo propietario. Luego, procedieron a publicar versiones maliciosas de 18 paquetes diferentes, todos ellos mantenedos por Junon.

Una ventana de oportunidad crítica

Los paquetes comprometidos estuvieron disponibles en el registro de npm aproximadamente entre las 9:00 a.m. y las 11:30 a.m. del 8 de septiembre de 2025. Aunque parece una ventana de tiempo breve, en el mundo del desarrollo de software, esto es suficiente para que millones de descargas ocurran, especialmente considerando la popularidad de los paquetes afectados.

"Parece y se siente un poco como un ataque dirigido. Lo siento a todos, muy vergonzoso." - Josh Junon, desarrollador afectado

Paquetes Afectados: La Magnitud del Problema

Interfaz de línea de comandos de npm

Los atacantes comprometieron un total de 18 paquetes npm, todos ellos mantenedos por Josh Junon. Estos paquetes, colectivamente, suman más de 2.6 mil millones de descargas semanales, lo que subraya la escala masiva de este ataque a la cadena de suministro.

Los más populares

Entre los paquetes más afectados se encuentran:

ansi-styles: 371.41M descargas semanales
debug: 357.6M descargas semanales
chalk: 299.99M descargas semanales
strip-ansi: 261.17M descargas semanales
supports-color: 287.1M descargas semanales
ansi-regex: 243.64M descargas semanales

Impacto en cascada

Lo que hace particularmente peligroso este ataque es que muchos de estos paquetes son dependencias de otros paquetes, creando un efecto cascada. Por ejemplo, chalk depende de ansi-styles, y muchos otros paquetes populares dependen de chalk. Esto significa que una sola inyección de código malicioso puede propagarse rápidamente a través de miles de proyectos diferentes.

La red de dependencias

Los paquetes afectados forman parte del tejido fundamental del ecosistema JavaScript. Muchas aplicaciones y sitios web, incluso aquellos que no utilizan directamente estos paquetes, podrían haber sido vulnerables debido a dependencias transitivas. Esto demuestra cómo un único punto de fallo en la cadena de suministro puede tener consecuencias masivas en toda la industria tecnológica.

Afortunadamente, el ataque fue detectado rápidamente por Aikido Security, que monitorea continuamente las actualizaciones de código en repositorios de código abierto importantes. La compañía notificó al desarrollador afectado a través de la red social Bluesky, y Junon respondió rápidamente que era consciente de haber sido víctima de phishing y ya estaba trabajando para limpiar los paquetes comprometidos.

El Código Malicioso: Objetivo y Funcionamiento

Fragmento de código JavaScript

Los atacantes inyectaron un código malicioso sofisticado en los archivos index.js de los paquetes comprometidos. Este código estaba diseñado específicamente para interceptar transacciones de criptomonedas en los navegadores de los usuarios, redirigiendo fondos a direcciones controladas por los atacantes sin que los usuarios se dieran cuenta.

Intercepción silenciosa

El malware operaba en múltiples niveles:

Monitoreaba las API del navegador como fetch y XMLHttpRequest

Interceptaba interfaces de billeteras como window.ethereum

Manipulaba lo que las aplicaciones creían que estaban firmando

Redirigía fondos a direcciones controladas por los atacantes

Técnicas de evasión

El código malicioso estaba ofuscado para dificultar su detección y análisis. Utilizaba técnicas de ofuscación como:

Nombres de variables confusos

Utilizaba nombres de variables sin sentido como _0x124ed3 o _0xba16ef

Funciones codificadas

Operaciones matemáticas simples reemplazadas por llamadas a funciones

Cadenas de texto codificadas

Direcciones de criptomonedas y URLs almacenadas como variables

Lógica de control compleja

Múltiples condiciones y bifurcaciones para confundir el análisis

Direcciones de criptomonedas objetivo

El código malicioso contenía una larga lista de direcciones de criptomonedas a las que redirigir los fondos robados. Estas incluían:

Múltiples criptomonedas objetivo

Bitcoin

Direcciones que comienzan con "1"

Bitcoin Cash

Direcciones que comienzan con "1"

Ethereum

Direcciones que comienzan con "0x"

"Este malware es esencialmente un interceptor basado en navegador que secuestra tanto el tráfico de red como las API de la aplicación. Lo que lo hace peligroso es que opera en múltiples niveles: alterando contenido mostrado en sitios web, manipulando llamadas a la API y manipulando lo que las aplicaciones de los usuarios creen que están firmando." - Charlie Eriksen, investigador de Aikido Security

Posibles Responsables: El Grupo Lazarus

Imagen del grupo Lazarus con fondo de circuitos rojos y bandera de Corea del Norte

Aunque ningún grupo ha reclamado oficialmente la responsabilidad del ataque, varios expertos en ciberseguridad señalan similitudes con las tácticas utilizadas por el grupo Lazarus, una organización de hackers respaldada por Corea del Norte conocida por sus sofisticados ataques a la cadena de suministro de software y su interés en el robo de criptomonedas.

Antecedentes del grupo Lazarus

El grupo Lazarus ha estado activo desde al menos 2009 y es responsable de algunos de los ataques cibernéticos más significativos de la última década, incluyendo:

El ataque a Sony Pictures en 2014

El robo de 81 millones de dólares del Banco Central de Bangladesh en 2016

El ataque WannaCry de 2017 que afectó a organizaciones de todo el mundo

El robo de 625 millones de dólares del juego Axie Infinity en 2022

Evidencia circunstancial

Varios factores apuntan hacia la posible implicación de Lazarus en este ataque:

Cronología

El ataque ocurre después de un informe de julio que advertía que Lazarus estaba apuntando a paquetes de código abierto, incluyendo npm

Motivación financiera

El malware está específicamente diseñado para robar criptomonedas, un objetivo típico de Lazarus

Ingeniería social

El uso sofisticado de phishing y dominios falsos coincide con las tácticas habituales del grupo

Técnicas de ofuscación

El código malicioso utiliza técnicas de evasión similares a las empleadas en ataques anteriores atribuidos a Lazarus

Un patrón preocupante

Este ataque se suma a una creciente tendencia de grupos de amenazas persistentes avanzadas (APTs) como Lazarus de apuntar a la cadena de suministro de software. Al comprometer paquetes de código abierto ampliamente utilizados, estos grupos pueden alcanzar un número masivo de víctimas con un esfuerzo relativamente pequeño. Esta táctica representa una evolución peligrosa en el panorama de las ciberamenazas, ya que explota la confianza inherente en el software de código abierto y la naturaleza interconectada del ecosistema de desarrollo moderno.

"La toma de control de paquetes es ahora una táctica estándar para grupos de amenazas persistentes avanzadas como Lazarus, porque saben que pueden llegar a una gran cantidad de la población de desarrolladores infiltrándose en un solo proyecto con pocos recursos." - Ilkka Turunen, Field CTO de Sonatype Inc.

Respuesta y Contención: Limitando el Daño

Dos personas trabajando en computadoras con código en pantalla

A pesar de la escala masiva del ataque, la respuesta rápida y coordinada de la comunidad de seguridad y el desarrollador afectado logró limitar significativamente el daño potencial. La detección temprana fue clave para evitar consecuencias más graves.

Detección y respuesta rápidas

La cronología de la respuesta fue notablemente eficiente:

13:16 UTC - Aikido Security detecta las primeras versiones maliciosas

13:20 UTC - Aikido notifica al desarrollador a través de Bluesky

15:15 UTC - El desarrollador confirma que es consciente del compromiso

15:30 UTC - Comienza el proceso de limpieza de los paquetes afectados

Colaboración de la comunidad

Uno de los aspectos más destacados de la respuesta a este incidente fue la colaboración entre diferentes actores del ecosistema de seguridad y desarrollo de software. Además de Aikido Security y el desarrollador afectado, varias empresas y organizaciones jugaron un papel crucial en la contención del ataque:

npm Inc.

Trabajó rápidamente para despublicar las versiones comprometidas y restaurar las legítimas

Empresas de seguridad

Múltiples firmas emitieron alertas y proporcionaron herramientas de detección

Comunidad de desarrolladores

Compartió información rápidamente a través de redes sociales y canales de comunicación

Plataformas de desarrollo

GitHub y otras plataformas implementaron medidas para detectar y bloquear el código malicioso

Impacto limitado

A pesar de la escala potencial del ataque, el impacto real parece haber sido limitado gracias a la rápida respuesta. Según informes posteriores, aunque millones de descargas ocurrieron durante la ventana de tiempo en que los paquetes estuvieron comprometidos, no se han reportado robos significativos de criptomonedas atribuibles a este incidente. Esto subraya la importancia de la detección temprana y la respuesta coordinada en la mitigación de ataques a la cadena de suministro.

"Innumerables sitios web esquivaron una bala porque este incidente se manejó en cuestión de horas. Como ejemplo de cómo estos ataques a la cadena de suministro pueden escalar rápidamente, podríamos mirar otros compromisos de desarrolladores de npm que han tenido consecuencias mucho más graves." - Charlie Eriksen, investigador de Aikido Security

Medidas de Seguridad: Protegiendo la Cadena de Suministro

Diagrama de flujo de seguridad entre NPM y AppDev

Este ataque ha puesto de manifiesto la necesidad crítica de fortalecer la seguridad en toda la cadena de suministro de software. A continuación, se presentan algunas medidas clave que desarrolladores, empresas y plataformas pueden implementar para protegerse contra amenazas similares.

Autenticación fuerte

Una de las lecciones más importantes de este incidente es la vulnerabilidad de los métodos de autenticación de dos factores que pueden ser objeto de phishing. Los expertos recomiendan:

Utilizar claves de seguridad físicas (FIDO2/WebAuthn) que son a prueba de phishing

Implementar autenticación biométrica cuando sea posible

Utilizar aplicaciones de autenticación en lugar de SMS para 2FA

Verificación de paquetes

Los desarrolladores y empresas deben implementar procesos rigurosos para verificar la integridad de los paquetes que utilizan:

Firmas digitales

Verificar las firmas digitales de los paquetes antes de instalarlos

Control de versiones

Mantener versiones estables y evaluar cuidadosamente las actualizaciones

Auditoría de código

Realizar auditorías de seguridad de las dependencias críticas

Bloqueo de dependencias

Utilizar archivos lock para garantizar versiones específicas y probadas

Mejoras en las plataformas

Las plataformas como npm y GitHub también tienen un papel crucial que jugar en la prevención de futuros ataques:

Recomendaciones para plataformas

Exigir autenticación fuerte para mantenedores de paquetes populares

Implementar análisis automatizado de código en busca de patrones sospechosos

Notificar a los usuarios cuando se actualicen dependencias críticas

Implementar sistemas de atestación para verificar la procedencia del código

"NPM solo debería admitir autenticación a prueba de phishing. Toda la infraestructura crítica necesita usar 2FA a prueba de phishing, y dadas las dependencias en el software moderno, archivos como NPM son absolutamente infraestructura crítica." - Nicholas Weaver, investigador del International Computer Science Institute

Implicaciones: Lecciones para el Ecosistema JavaScript

Diagrama de red mostrando conexiones del grupo Lazarus

El ataque masivo a los paquetes npm tiene implicaciones profundas para todo el ecosistema de desarrollo de software. Más allá de las medidas de seguridad inmediatas, este incidente nos obliga a reflexionar sobre cuestiones fundamentales relacionadas con nuestra dependencia del software de código abierto y la distribución de responsabilidades en la cadena de suministro digital.

La paradoja del código abierto

Este incidente resalta una paradoja fundamental del software de código abierto:

Dependemos masivamente de paquetes de código abierto para el desarrollo moderno

Muchos de estos paquetes son mantenidos por voluntarios con recursos limitados

Empresas multinacionales dependen de este software sin contribuir adecuadamente a su mantenimiento

La seguridad de estos paquetes a menudo recibe menos atención de la necesaria

El modelo de sostenibilidad

Este ataque plantea preguntas urgentes sobre la sostenibilidad del modelo actual de desarrollo de software de código abierto. Como señaló acertadamente Kevin Beaumont, experto en seguridad:

Una reflexión crítica

"Durante unos 15 años, cada empresa ha estado desarrollando aplicaciones incorporando 178 bibliotecas interconectadas escritas por 24 personas en un cobertizo en Skegness. Durante unos 2 años, las organizaciones han estado comprando herramientas de codificación con vibes de IA, donde algún ejecutivo grita 'haz tienda online' en una computadora y se agregan 389 bibliotecas y se expulsa una aplicación. El resultado = si quieres poseer las empresas del mundo, solo haz phishing a un tipo en Skegness."

Necesidad de un cambio sistémico

Para abordar estos desafíos de manera efectiva, se necesitan cambios sistémicos en múltiples niveles:

Empresas

Invertir en el mantenimiento y seguridad del software de código abierto que utilizan

Gobiernos

Establecer regulaciones y estándares para la seguridad de la cadena de suministro

Comunidad

Desarrollar mejores prácticas y herramientas para la seguridad colaborativa

El camino forward

Este ataque debe servir como un llamado a la acción para toda la industria tecnológica. Algunas iniciativas prometedoras incluyen:

Modelos de financiación sostenible para proyectos de código abierto críticos

Mejora de la educación en seguridad para desarrolladores

Diseño de sistemas más resilientes con menos dependencias críticas

Colaboración entre empresas, gobiernos y la comunidad de código abierto

"Este incidente representa un momento decisivo en la seguridad de la cadena de suministro de software. Los atacantes no necesitaron romper servidores o evadir defensas técnicas; simplemente secuestraron la cuenta legítima de un mantenedor a través de una campaña de phishing dirigida. Eso solo les dio las llaves a un vasto reino del software." - Ensar Seker, CISO de SOCRadar Cyber Intelligence Inc.

En última instancia, el ataque a los paquetes npm no es solo un incidente de seguridad aislado, sino un síntoma de problemas más profundos en nuestra infraestructura digital. A medida que avanzamos hacia una economía y sociedad cada vez más digitalizadas, debemos abordar estas vulnerabilidades fundamentales para construir un ecosistema tecnológico más seguro y resiliente para el futuro.

Publicado el 9/9/2025

Compartir este artículo: