Nx es un popular
sistema de compilación de código abierto y una herramienta de gestión de
repositorios, ampliamente utilizado en ecosistemas JavaScript/TypeScript a
escala empresarial, con más de 5,5 millones de descargas semanales en el
índice de paquetes de NPM.
El 26 de agosto de 2025, atacantes explotaron un flujo de trabajo defectuoso
de GitHub Actions en el repositorio Nx para publicar una versión maliciosa del
paquete en NPM, que incluía un script de malware posterior a la instalación
(‘telemetry.js’).
Las investigaciones sobre el ataque a la cadena de suministro de Nx
«s1ngularity» de NPM han revelado consecuencias masivas, con la filtración de
miles de tokens de cuentas y secretos de repositorios. Según una evaluación posterior al incidente realizada por investigadores de Wiz, la vulnerabilidad de Nx ha resultado en la exposición de 2.180 cuentas y
7.200 repositorios en tres fases distintas.
El malware telemetry.js es un ladrón de credenciales dirigido a
sistemas Linux y macOS. Este ladrón intentaba robar tokens de GitHub, tokens
de NPM, claves SSH, archivos .env y monederos de criptomonedas, y subir
los secretos a repositorios públicos de GitHub llamados
«s1ngularity-repository».
Lo más destacado de este ataque fue que el ladrón de credenciales utilizaba
herramientas de línea de comandos instaladas para plataformas de inteligencia
artificial, como Claude, Q y Gemini, para buscar y recopilar credenciales y
secretos confidenciales mediante indicaciones de LLM.
Un radio de explosión masivo
En la primera fase del ataque, entre el 26 y el 27 de agosto, los paquetes Nx
con puerta trasera afectaron directamente a 1.700 usuarios, filtrando más de
2.000 secretos únicos. El ataque también expuso 20.000 archivos de los
sistemas infectados.
GitHub respondió desactivando los repositorios que el atacante creó después de
ocho horas, pero los datos ya se habían copiado.
Entre el 28 y el 29 de agosto, que Wiz define como la fase 2 del incidente,
los atacantes utilizaron los tokens de GitHub filtrados para convertir
repositorios privados en públicos, renombrándolos para incluir la cadena
«s1ngularity». Esto resultó en la vulneración de otras 480 cuentas, la
mayoría de las cuales eran organizaciones, y la exposición pública de 6.700
repositorios privados.
En la tercera fase, que comenzó el 31 de agosto, los atacantes atacaron a una
sola organización víctima, utilizando dos cuentas comprometidas para publicar
500 repositorios privados adicionales.

Respuesta de Nx
El equipo de Nx publicó un
análisis detallado de la causa raíz en GitHub, explicando que la vulnerabilidad se debió a la inyección de un título en
una solicitud de extracción (Purple Request Title) junto con el uso inseguro
de pull_request_target.
Esto permitió a los atacantes ejecutar código arbitrario con permisos
elevados, lo que a su vez activó el flujo de publicación de Nx y extrajo el
token de publicación de NPM.
Los paquetes maliciosos se eliminaron, los tokens comprometidos se revocaron y
rotaron, y se adoptó la autenticación de dos factores en todas las cuentas de
los editores.
Para evitar que se repita una vulnerabilidad de este tipo, el proyecto Nx ha
adoptado el modelo de Editor de Confianza de NPM, que elimina la publicación
basada en tokens y añade la aprobación manual para los flujos de trabajo
activados por PR.
Fuente:
BC