Una campaña de phishing dirigida contra el mantenedor Josh Junon (Qix) desencadenó la que varios investigadores describen como la mayor intrusión de cadena de suministro en la ecosistema JavaScript hasta la fecha. Los atacantes publicaron versiones maliciosas de paquetes de alto impacto como chalk y strip-ansi, que en conjunto superan los 2,6 mil millones de descargas semanales, lo que amplifica el riesgo por las dependencias transitivas en innumerables proyectos.
Cronología: phishing contra un mantenedor de npm
El 8 de septiembre de 2025, Qix confirmó la toma de control de sus cuentas tras recibir correos de support@npmjs[.]help, un dominio registrado el 5 de septiembre y diseñado para parecer legítimo (npmjs.com). Los mensajes urgían a «actualizar la 2FA» con la amenaza de un bloqueo tras el 10 de septiembre.
Según BleepingComputer, las credenciales introducidas en npmjs[.]help eran exfiltradas hacia https://websocket-api2[.]publicvm[.]com/…, lo que encaja con patrones de robo de contraseñas y tokens. Tras el incidente, el mantenedor pidió disculpas y comenzó acciones de recuperación.
Paquetes afectados y alcance en la cadena de dependencias
El equipo de npm retiró con rapidez los lanzamientos maliciosos publicados desde la cuenta comprometida. De acuerdo con la empresa Socket, el acceso a la cuenta de Qix permitió a los atacantes propagar variantes contaminadas de dependencias base de las que heredan “innumerables aplicaciones, librerías y frameworks”. La transitividad del ecosistema npm multiplica el radio de impacto, incluso cuando los proyectos no declaran directamente los paquetes afectados.
Vector técnico: inyección de código en navegador y robo de criptoactivos
Aikido Security identificó la inserción de unas 280 líneas de lógica maliciosa en index.js. El payload se ejecuta en cliente y está orientado a usuarios que interactúan vía navegador. Su objetivo: interceptar y manipular operaciones con wallets y transacciones cripto.
El implante secuestra primitivas clave de JavaScript y APIs web3, incluidos fetch, XMLHttpRequest, window.ethereum y soportes para Solana, entre otros. Bajo determinados escenarios, al enviar Ethereum, Bitcoin, Solana, Tron, Litecoin o Bitcoin Cash, el malware sustituye la dirección del destinatario por otra controlada por el atacante antes de la firma, dificultando la detección visual de la alteración en la interfaz.
Impacto real y por qué fue limitado
A pesar del alcance potencial, Security Alliance (SEAL) y VXUnderground estiman la “recaudación” real entre unos céntimos y 50 dólares. La razón principal fue un error en el código que, en ocasiones, insertaba direcciones de Uniswap y otros contratos de intercambio en lugar de monederos controlados por los atacantes, desviando fondos a destinos inefectivos.
BleepingComputer añade que el ataque exige condiciones específicas en el lado del cliente y no suele activarse en entornos de servidor, acotando el vector. Aun así, los usuarios de web3 siguen expuestos si consumen frontends contaminados o extensiones afectadas.
Recomendaciones de seguridad para reducir el riesgo
Para desarrolladores y equipos DevSecOps
– Recompilar y redeployar frontends tras eliminar dependencias comprometidas; fijar versiones, usar lockfiles y verificar hashes de artefactos.
– Habilitar 2FA obligatoria en npm/GitHub, emplear tokens con privilegios mínimos, SSO y revocar accesos antiguos de forma periódica.
– Fortalecer la seguridad de la cadena de suministro: SCA/Dependency Review, monitorización de integridad, firma de artefactos (p. ej., Sigstore) y políticas de aprobación de releases de mantenedores.
– Implementar Content Security Policy (CSP) y Subresource Integrity (SRI) para mitigar ejecución de JS manipulado.
Para usuarios y criptoinversores
– Preferir hardware wallets y verificar la dirección del destinatario en la pantalla del dispositivo antes de firmar. Como sugiere el CTO de Ledger, Charles Guillemet, sin hardware es prudente posponer transacciones on-chain ante dudas.
– Evitar enlaces en correos sobre “verificación urgente de 2FA”; acceder a cuentas vía marcadores o introduciendo la URL manualmente.
– Actualizar apps/extensiones comprometidas, limpiar caché y Service Workers, y auditar scripts de autocompletado y extensiones del navegador.
Este incidente ilustra el riesgo sistémico de los paquetes con gran adopción: la toma de una sola cuenta de mantenedor puede propagar compromisos a gran escala. Aunque el daño financiero directo fue bajo, el impacto en la confianza y la superficie de ataque es significativo. Es momento de reforzar la higiene de cuentas, profesionalizar la seguridad de la cadena de suministro y consolidar la verificación en hardware para operaciones críticas.