Hackean a millones de desarrolladores de JS... (Axios comprometido)

BBetter Stack
Computing/SoftwareBusiness NewsInternet Technology

Transcript

00:00:00Esta podría ser una de las mayores brechas en la cadena de suministro de NPM que hayamos visto,
00:00:03y no, esto no es una broma del Día de los Inocentes, es solo un mal momento y la gente debe saberlo.
00:00:07Sucedió en el paquete Axios; el cliente HTTP ha sido instalado 101 millones de veces esta semana
00:00:13y tiene más de 174,000 dependientes. Ya ha afectado a paquetes como Datadog,
00:00:18OpenClaw y WordPress, y también se ha vinculado con hackers norcoreanos.
00:00:22Así que, entremos de lleno y veamos qué pasó.
00:00:29Esta es la historia: el 31 de marzo de 2026, un atacante comprometió la cuenta de NPM
00:00:34del mantenedor principal de Axios y publicó dos versiones con puerta trasera, la versión 1.14.1 que
00:00:39fue marcada como la última versión y también la versión 0.30.4 marcada como legado.
00:00:44En estos paquetes introdujeron una dependencia fantasma llamada "plaincryptojs",
00:00:48que era esencialmente el paquete normal crypto.js pero con un pequeño ajuste:
00:00:52tenía un script de post-instalación llamado setup.js. Eso significa que todos y cada CI que instalara
00:00:58estos paquetes comprometidos también estaba ejecutando este script. El script en sí contenía
00:01:02código ofuscado que verificaba qué sistema operativo estabas usando y luego se conectaba a un servidor
00:01:07para descargar una segunda carga útil relevante para tu sistema operativo. Así que nadie
00:01:12estaba a salvo de este ataque e incluso se aseguraron de que la carga útil de Mac OS
00:01:16funcionara tanto en Macs Intel como Apple. Y es la segunda carga útil la que es realmente mala,
00:01:20se trata del RAT o troyano de acceso remoto y funciona básicamente igual en todos los
00:01:25sistemas operativos. Primero escaneaba tus archivos revisando tus documentos, escritorio
00:01:29y carpetas de configuración, y la versión de Windows incluso escaneaba tu OneDrive, AppData y cada
00:01:33letra de unidad que tuvieras en tu sistema y luego enviaba esa lista de archivos al servidor,
00:01:38probablemente para verificar si había algo que valiera la pena robar. Después de eso, comenzaba
00:01:42a emitir señales, por lo que cada 60 segundos contactaba al servidor con tu nombre de host, usuario, sistema operativo,
00:01:47zona horaria, modelo de hardware y una lista completa de todos los procesos en ejecución para que el atacante viera
00:01:52qué software usas y si lo estás usando activamente. Y si todo eso no suena lo suficientemente mal,
00:01:56lo peor está por venir, ya que en cualquier momento el atacante podía emitir remotamente cuatro comandos
00:02:00que le permitirían navegar por cualquier directorio de tu sistema, ejecutar comandos de shell o scripts arbitrarios,
00:02:05soltar y ejecutar malware adicional o incluso matar todo el proceso para borrar sus huertos. De hecho,
00:02:10incluso se aseguraron de que el script de configuración original se borrara a sí mismo y luego borrara el package.json
00:02:15que tenía la post-instalación y lo reemplazara con una versión limpia para intentar que esto fuera
00:02:19tan indetectable como fuera posible. Como pueden ver, este hack fue realmente malo y fue diseñado
00:02:23para atacar estaciones de trabajo de desarrolladores y ejecutores de CI/CD para buscar todo tipo de secretos como archivos .env,
00:02:28tokens de NPM, claves SSH y cualquier otra cosa; y cualquier sistema que ejecutara estas cargas maliciosas
00:02:34debería tratarse como un escenario de robo total de credenciales. Además de todo esto, está también
00:02:38el misterio de cómo se comprometió la cuenta de NPM. El mantenedor señaló que tiene activada la autenticación de dos factores
00:02:43y sus flujos de GitHub Actions también tienen la autenticación activada. Así que lo que parece haber pasado es que
00:02:47los paquetes se publicaron usando el CLI de NPM con un token de acceso de NPM de larga duración. La siguiente pregunta
00:02:53es cómo obtuvieron acceso a ese token, y el mantenedor incluso piensa que alguien podría haber
00:02:56obtenido sus códigos de recuperación de cuenta, pero cómo lo hicieron es un completo misterio por ahora. Si quieres
00:03:01ver si te has visto afectado por algo de esto, asegúrate de buscar en tus archivos lock las versiones de axios
00:03:04impactadas, así como el paquete plaincryptojs, y también busca en tus node modules
00:03:09el paquete en sí. Si ves alguno de ellos, desafortunadamente son malas noticias. También puedes revisar
00:03:14tu sistema en busca de rastros del RAT y dejaré informes completos en el enlace de abajo para que sigas
00:03:18los pasos y sepas qué hacer si has sido comprometido. En el futuro, también hay algunos
00:03:22pasos que puedes tomar para intentar prevenir estos ataques; el primero es siempre subir tus archivos lock
00:03:26y asegúrate de usar el comando "npm ci" en lugar de "npm install" en tus flujos de trabajo.
00:03:31También querrás asegurarte de tener una edad mínima establecida en tu gestor de paquetes, asegurándote
00:03:35de que los paquetes tengan al menos 48 horas de antigüedad antes de ser instalados, con la esperanza de que los maliciosos
00:03:39sean detectados a tiempo, ya que este de axios fue descubierto y borrado tres horas después. Finalmente,
00:03:44si es posible, simplemente usa la bandera "ignore-scripts" cuando ejecutes npm install o usa un gestor
00:03:48de paquetes como Bun, que bloquea todos los scripts de post-instalación por defecto y solo los ejecuta
00:03:53en las dependencias que hayas listado específicamente como confiables. Espero que este sea el mayor ataque que
00:03:57veamos este año, pero definitivamente estamos viendo más y más de ellos, así que asegúrense de mantenerse a salvo
00:04:01allá afuera y déjenme saber qué piensan de todo esto en los comentarios de abajo
00:04:04o denle a suscribirse y, como siempre, nos vemos en el próximo.

Key Takeaway

El compromiso de las versiones 1.14.1 y 0.30.4 de Axios mediante una puerta trasera en la dependencia plaincryptojs permitió el despliegue de troyanos de acceso remoto en estaciones de trabajo de desarrolladores y entornos CI/CD.

Highlights

El paquete Axios registró 101 millones de instalaciones semanales y posee 174.000 dependientes antes del compromiso de seguridad del 31 de marzo de 2026.

Las versiones comprometidas 1.14.1 y 0.30.4 introdujeron la dependencia maliciosa plaincryptojs para ejecutar scripts de post-instalación automáticos.

El malware descarga una segunda carga útil adaptada a Windows, macOS (Intel y Apple Silicon) o Linux tras identificar el sistema operativo de la víctima.

Un troyano de acceso remoto (RAT) escanea archivos en Documentos, Escritorio, OneDrive y AppData, enviando metadatos del sistema al servidor cada 60 segundos.

El atacante dispone de cuatro comandos remotos para navegar directorios, ejecutar scripts de shell, instalar malware adicional o finalizar procesos para borrar rastros.

La seguridad de la cuenta del mantenedor de Axios fue vulnerada a pesar de tener activada la autenticación de dos factores (2FA) en NPM y GitHub Actions.

El uso de la bandera ignore-scripts en NPM o el gestor de paquetes Bun bloquea por defecto la ejecución de estos scripts maliciosos de post-instalación.

Timeline

Vulneración masiva en la cadena de suministro de NPM

  • Axios sufrió una brecha de seguridad crítica con 101 millones de descargas registradas en la última semana.
  • El ataque afecta directamente a proyectos dependientes de gran escala como WordPress, Datadog y OpenClaw.
  • Existen vínculos técnicos que relacionan esta actividad maliciosa con grupos de hackers de Corea del Norte.

La escala del incidente es masiva debido a la ubicuidad de Axios como cliente HTTP en el ecosistema JavaScript. Con más de 174.000 paquetes que dependen de él, la infiltración compromete una parte significativa de la infraestructura web moderna. El momento del ataque coincide con el 31 de marzo, lo que descarta cualquier relación con bromas estacionales.

Mecanismo de infección y ejecución de carga útil

  • El atacante publicó las versiones 1.14.1 (última) y 0.30.4 (legado) tras comprometer la cuenta del mantenedor principal.
  • La dependencia fantasma plaincryptojs incluye un archivo setup.js que se ejecuta automáticamente mediante scripts de post-instalación.
  • El código ofuscado descarga una carga útil específica según el sistema operativo detectado, incluyendo soporte nativo para procesadores Apple e Intel.

La infiltración utiliza el comando de post-instalación de NPM para garantizar que cualquier servidor de integración continua (CI) o máquina de desarrollo ejecute el código al instalar las dependencias. El script inicial actúa como un recolector de información básica para decidir qué versión del malware final descargar. Este método permite que el ataque sea multiplataforma y altamente efectivo contra flujos de trabajo automatizados.

Capacidades del troyano de acceso remoto

  • El troyano realiza un escaneo exhaustivo de archivos personales, carpetas de configuración y unidades de red como OneDrive.
  • El sistema infectado envía el nombre de host, procesos activos y modelo de hardware al servidor atacante cada minuto.
  • Los atacantes pueden ejecutar comandos de shell arbitrarios y manipular el sistema de archivos de forma remota.

El malware busca específicamente secretos de desarrollo como archivos .env, tokens de NPM y claves SSH para facilitar robos de credenciales a gran escala. Para evitar la detección, el script de configuración borra el rastro de la instalación maliciosa y reemplaza el archivo package.json por una versión limpia. La capacidad de emitir señales constantes permite al atacante monitorear si el desarrollador está usando la máquina activamente antes de intervenir.

Investigación del acceso y medidas de prevención

  • El compromiso ocurrió probablemente mediante un token de acceso de larga duración en el CLI de NPM, evadiendo el 2FA activo.
  • El comando npm ci y la bandera ignore-scripts mitigan el riesgo de ejecución de código no deseado durante la instalación.
  • Establecer una edad mínima de 48 horas para paquetes nuevos en el gestor de dependencias ayuda a evitar versiones maliciosas recientes.

A pesar de que el mantenedor utilizaba autenticación de dos factores, el uso de tokens persistentes en herramientas de línea de comandos representó un punto de falla. La detección rápida, ocurrida tres horas después de la publicación, resalta la importancia de retrasar la adopción de versiones recién publicadas. El uso de gestores como Bun ofrece una capa de seguridad adicional al bloquear scripts de terceros por defecto.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video