Una de las campañas de cadena de suministro más amplias registradas en la ecosistema npm demostró la velocidad con la que el código malicioso puede propagarse a través de dependencias populares de JavaScript. En un lapso aproximado de dos horas, versiones comprometidas de paquetes críticos llegaron a ejecutarse en alrededor del 10% de los entornos en la nube, según estimaciones del proveedor de seguridad Wiz, pese a que la monetización de los atacantes fue mínima.
Compromiso inicial: robo de credenciales y actualización de paquetes muy utilizados
El incidente comenzó con un phishing que permitió secuestrar credenciales de un mantenedor de npm. Con acceso a su cuenta, los atacantes publicaron versiones alteradas de cerca de 20 paquetes ampliamente usados, incluidos chalk, debug y ansi-styles, que acumulan más de 2,6 mil millones de descargas semanales. El objetivo de las modificaciones era el crypto-draining: interceptar transacciones y sustituir direcciones de destinatario para desviar fondos.
Alcance real: dependencia casi universal y penetración en la nube
El análisis de Wiz subraya el carácter sistémico del riesgo: al menos uno de los paquetes alterados figura como dependencia base en prácticamente cualquier proyecto JavaScript/Node.js y está presente en el 99% de entornos cloud. Durante las aproximadamente dos horas en que las versiones maliciosas estuvieron disponibles en npm, se registraron descargas en alrededor del 10% de los entornos en la nube, lo que ilustra la facilidad con la que una cadena de suministro comprometida puede atravesar controles tradicionales.
Técnica de ataque: inyección en el navegador y desvío de transacciones
De acuerdo con Security Alliance, la carga maliciosa estaba orientada a la ejecución en navegador. El script comprobaba la presencia de window.ethereum
y enganchaba funciones básicas de transacción de Ethereum —approve, permit, transfer, transferFrom— para redirigirlas a la billetera 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976. Asimismo, transacciones de ETH con cantidades concretas y sin datos adicionales eran redirigidas. En Solana, los atacantes sustituían el destinatario por una cadena no válida que comenzaba por “1911…”, interrumpiendo la transferencia y buscando forzar intentos repetidos susceptibles de manipulación.
Daño acotado y rentabilidad fallida
La respuesta de la comunidad y de los repositorios fue rápida: las publicaciones maliciosas se retiraron en cuestión de horas. Investigadores señalan que los operadores habrían usado addresses asociados a Uniswap y otros swap contracts en lugar de sus propios monederos, lo que redujo drásticamente el beneficio. Las cifras observadas van de centavos a decenas de dólares por evento, con pérdidas agregadas por parte de las víctimas muy limitadas.
Reincidencia y balance económico
Según Socket, el mismo grupo comprometió más tarde la cuenta de un mantenedor de DuckDB, inyectando una carga idéntica. El rendimiento económico volvió a ser bajo: alrededor de USD 429 en ETH, USD 46 en SOL y pequeñas cantidades en BTC, Tron, BCH y LTC, para un total cercano a USD 600. Aun con acceso a cadenas de suministro, los atacantes no escalaron a movimientos laterales ni a despliegues de ransomware, limitándose al robo de criptomonedas.
Lecciones clave: controlar dependencias y endurecer la cadena de suministro
El incidente confirma un vector crítico: la propagación veloz y masiva de dependencias maliciosas en proyectos de código abierto. Las medidas prioritarias incluyen: MFA obligatoria y administración segura de cuentas de mantenedores; firma y atestación de artefactos (p. ej., Sigstore y provenance para npm); bloqueo de versiones con archivos lock y verificaciones periódicas; SBOM para visibilidad de dependencias; control de egress e aislamiento de runners CI/CD; política de mínimo privilegio; revisión de publicaciones por pares y monitoreo continuo de anomalías en la cadena de suministro.
La lección operativa es directa: incluso ventanas cortas de exposición pueden permear una fracción significativa de la nube. Fortalecer procesos de construcción confiable, exigir transparencia de origen de artefactos y automatizar el control de dependencias reduce superficie de ataque y acelera la respuesta. Revise hoy sus políticas de publicación, tokens de npm, flujos de CI/CD y alertas de dependencias; una higiene de desarrollo rigurosa es la defensa más eficaz frente al próximo intento de compromiso.