Ataque de cadena de suministro en Nx expone secretos y credenciales
Ataque de cadena de suministro en Nx expone secretos y credenciales

Ataque de cadena de suministro en Nx expone secretos y credenciales

Nx, un sistema de compilación y herramienta de gestión de repositorios de código abierto ampliamente utilizado en ecosistemas JavaScript/TypeScript a escala empresarial, fue blanco de un ataque de cadena de suministro el 26 de agosto de 2025. Los 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 llamado telemetry.js.

Impacto masivo del ataque

Las investigaciones sobre el incidente «s1ngularity» han revelado consecuencias significativas, 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 resultó 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 del 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.

Las tres fases del ataque

Fase 1: 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.

Fase 2: Entre el 28 y el 29 de agosto, 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.

Fase 3: 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 del equipo 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 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.