El 8 de septiembre de 2025, varios paquetes npm extremadamente populares —incluyendo chalk, debug, ansi-styles, color-convert, strip-ansi y supports-color— fueron comprometidos y republicados con código malicioso.
Estos paquetes representan dependencias fundamentales en el ecosistema JavaScript y, en conjunto, cuentan con miles de millones de descargas semanales. Las versiones maliciosas permanecieron en línea en el registro de npm durante aproximadamente 2,5 horas antes de ser eliminadas.
Debido a la popularidad de estos paquetes y su uso como dependencias transitivas, la exposición potencial es extremadamente amplia, afectando tanto a los desarrolladores de aplicaciones como a los consumidores finales.
| Fecha | 2025-09-09 13:17:45 |
Resumen técnico
La vulneración se originó a partir de una campaña de phishing dirigida contra el mantenedor de los paquetes. Los atacantes enviaron correos electrónicos que imitaban al soporte de npm, utilizando un dominio falso (npmjs.help) para engañar al mantenedor y obtener sus credenciales. Una vez comprometido el acceso a la cuenta, los atacantes pudieron publicar versiones maliciosas de los paquetes afectados directamente en el registro de npm.
Los paquetes comprometidos contenían código malicioso ofuscado que interceptaba tanto el tráfico de red como las API de las aplicaciones, enfocándose principalmente en operaciones relacionadas con criptomonedas, mediante:
- Hook de las API relacionadas con criptomonedas;
- Detección de direcciones de billeteras y detalles de transacciones;
- Sustitución de los destinos legítimos de las billeteras por direcciones controladas por los atacantes;
Paquetes comprometidos y sus respectivas versiones:
| Nombre | Versión |
|---|---|
| ansi-regex | 6.2.1 |
| ansi-styles | 6.2.2 |
| backslash | 0.2.1 |
| chalk | 5.6.1 |
| chalk-template | 1.1.1 |
| color-convert | 3.1.1 |
| color-name | 2.0.1 |
| color-string | 2.1.1 |
| debug | 4.4.2 |
| error-ex | 1.3.3 |
| has-ansi | 6.0.1 |
| is-arrayish | 0.3.3 |
| 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 |
Recomendaciones
- Identificar y eliminar las versiones comprometidas: Escanear la presencia de los paquetes y las versiones enumeradas anteriormente y vaciar las cachés de
npm/yarn/pnpm. - Aplicar el uso de archivos de bloqueo: Bloquear las versiones (
package-lock.json,yarn.lock,pnpm-lock.yaml) para garantizar versiones consistentes y verificadas de las dependencias entre entornos y evitar instalaciones accidentales de actualizaciones maliciosas. - Reforzar la seguridad de la cadena de suministro: Implementar un monitoreo riguroso de las dependencias, usar SBOM para rastrear posibles exposiciones e implementar la autenticación de dos factores (2FA) con llaves de seguridad físicas para las cuentas de los mantenedores.
[Callforaction-THREAT-Footer]