Amazon ha vinculado el secuestro de los paquetes npm debug y chalk, ocurrido en septiembre de 2025, con Corea del Norte. Durante diez meses, el incidente fue registrado como un robo de criptomonedas: un mantenedor fue víctima de phishing a través de un dominio npm similar, y se insertó un script de drenaje de carteras en al menos 18 paquetes que sumaban más de 2 mil millones de descargas semanales.
Los informes originales de Aikido y Wiz no atribuyeron el incidente a Corea del Norte. En una investigación publicada el 29 de julio, Amazon Threat Intelligence evaluó con confianza media que el grupo responsable del compromiso de axios en marzo de 2026 estaba detrás de este ataque.
El mismo grupo colocó un archivo troyanizado en un paquete pequeño llamado typo-crypto en marzo de 2025, según Amazon, un año completo antes de que alcanzara axios. Los analistas lo encontraron mientras investigaban un dominio registrado en 2025 que surgió durante la investigación de axios.
Las descargas fueron bajas, pero las técnicas 'coinciden con lo que observamos posteriormente en ataques a paquetes más populares', escribió Amazon, y la empresa interpreta el paquete como una prueba. La atribución de Amazon abarca cuatro paquetes nombrados en tres campañas en doce meses. Todas, según afirma, comenzaron de la misma manera: ingeniería social a un mantenedor de confianza y luego publicación de una actualización.
Amazon no reportó nuevos compromisos. El alcance de la respuesta para debug y chalk, paquetes de navegador y cachés, seguía coincidiendo con el mecanismo publicado. Solo la atribución cambió.
La evidencia publicada por Amazon es más débil que la afirmación. Su publicación cita técnicas compartidas entre las campañas, paquetes troyanizados, hooks post-instalación y reutilización de código, además de indicadores de comando y control superpuestos, pero no especifica qué evidencia vincula cada incidente.
Esa brecha es más relevante para debug y chalk, donde Aikido y Wiz documentaron un interceptor del lado del navegador que interceptaba fetch, XMLHttpRequest y APIs de cartera para reescribir direcciones de transacción antes de que el usuario firmara. No dejaba persistencia en la máquina. A diferencia del payload de axios, este código no dependía de un hook post-instalación de npm. Tampoco typo-crypto, que esperaba un disparador en su lugar.
Google atribuyó axios de forma independiente a UNC1069, citando el backdoor WAVESHAPER.V2 y un nodo AstrillVPN que el grupo había utilizado antes. Microsoft atribuyó el mismo compromiso a Sapphire Sleet, que según sus informes se superpone con la actividad que otros proveedores rastrean como UNC1069, STARDUST CHOLLIMA, BlueNoroff, Alluring Pisces, CageyChameleon y CryptoCore.
La brecha de nombres se resuelve; la brecha de evidencia de Amazon no. Entre las fuentes revisadas aquí, Amazon sigue siendo la única fuente de atribución para los compromisos de debug, chalk y typo-crypto. Las atribuciones de axios llegaron en dos días tras el compromiso. Las otras dos se atribuyeron diez y dieciséis meses después.
Amazon interpreta el patrón como motivado financieramente. Socket informó a The Hacker News en ese momento que las carteras de septiembre habían obtenido unos 600 dólares.
El archivo malicioso que describe Amazon, core.js, se hacía pasar por el paquete legítimo core-js dentro del repositorio. Se activaba con una entrada hash que comenzaba con 0098273 y extraía una segunda etapa específica del sistema operativo desde un C2 hardcodeado, ofuscado con base64 sobre un cifrado XOR con clave 01042025. Los indicadores de red son npmjs[.]store y 216[.]74[.]123[.]126.
La publicación de Amazon cita el registro OSV sin nombrar una versión. The Hacker News lo verificó: MAL-2026-3400 identifica typo-crypto@4.3.0, acredita a Amazon Inspector y se publicó el 8 de mayo, casi tres meses antes de la atribución.
The Hacker News verificó el registro el 30 de julio de 2026. typo-crypto@4.3.0 sigue publicado y aún se puede instalar. No declara ningún script de instalación, por lo que descargarlo no ejecuta nada por sí mismo. El tarball que npm sirve coincide con los hashes de integridad del propio registro.
El registro muestra una sola versión, creada y publicada con 204 milisegundos de diferencia el 31 de marzo de 2025. La cuenta de publicación no coincide con el desarrollador nombrado en el campo de autor del paquete. Su descripción y palabras clave están copiadas de crypto-js, en una versión por delante de la última de crypto-js, 4.2.0. crypto-js es un proyecto diferente del core-js que el archivo suplantaba.
Ese registro no encaja con un compromiso de mantenedor seguido de una actualización maliciosa, que es cómo Amazon caracteriza las tres campañas. Encaja con un paquete construido para suplantar crypto-js desde la primera publicación. El registro no puede mostrar cómo se obtuvo la cuenta, solo que no había una versión anterior para actualizar.
El archivo coincide con la publicación en un aspecto: core.js contiene tanto el valor de activación como la clave XOR que Amazon nombra. Los hashes no coinciden. Amazon lista el SHA256 de core.js como el hash del paquete, y el hash de core.js que indica no aparece en ningún archivo del tarball. Un indicador mal etiquetado o un hash de una copia diferente podría explicarlo. La publicación de Amazon no especifica cuál.
The Hacker News se ha puesto en contacto con Amazon para obtener detalles sobre qué evidencia vincula el compromiso de septiembre de 2025, y con Aikido para su lectura sobre la reatribución, y actualizará esta historia con cualquier respuesta.
npm lanzó la v12 el 8 de julio con scripts de ciclo de vida de dependencias desactivados por defecto, eliminando la ruta post-instalación por defecto que usó axios. No cierra la ruta de compromiso de mantenedor detrás de debug, chalk y axios. Revisando el lanzamiento, Sarah Gooding, escribiendo para Socket, señaló que 'ni el bloqueo de scripts de instalación ni OIDC cierran ese punto de entrada'.
El 28 de julio, npm comenzó a escanear paquetes recién publicados en busca de malware antes de que puedan instalarse. El escaneo aplica a nuevas publicaciones, no a paquetes ya en el registro.