La empresa de seguridad web Jscrambler informó que un actor malicioso publicó una versión backdoor de su paquete npm, utilizado en su producto Code Integrity. El paquete malicioso abarcaba las versiones 8.14, 8.16, 8.17 y 8.20, e incluía un malware robainformación que se activaba durante el hook 'preinstall'.
Jscrambler declaró en un aviso el sábado: 'Hoy identificamos la publicación no autorizada de una versión maliciosa de nuestro paquete npm jscrambler, utilizado con nuestro producto Code Integrity. Este incidente se limitó a ese paquete y no afectó a ningún otro producto de Jscrambler, incluido Webpage Integrity'.
Aunque Jscrambler reaccionó con rapidez, el paquete malicioso estuvo disponible durante dos horas antes de que el desarrollador lo descontinuara y lanzara la versión segura 8.22. El paquete afectado era una dependencia de otros cuatro paquetes de Jscrambler, que también fueron descontinuados y reemplazados por nuevas versiones.
Según datos estadísticos de npm, el paquete malicioso se descargó 1.479 veces durante esas dos horas. Jscrambler es una plataforma comercial para proteger aplicaciones JavaScript web y móviles contra ingeniería inversa y manipulación. Su paquete npm tiene 17.000 descargas semanales y permite a los desarrolladores subir su JavaScript al servicio de Jscrambler para proteger el código.
La firma de seguridad de aplicaciones Socket detectó el compromiso y analizó la versión no autorizada. Los investigadores informaron que el paquete incluía un infostealer que apuntaba a múltiples tipos de datos sensibles: código fuente y archivos de proyecto, credenciales y secretos de desarrolladores (Git, SSH, variables de entorno, tokens CI/CD), credenciales de nube (AWS, Azure, GCP, Kubernetes), configuraciones de herramientas de codificación AI (Claude, Cursor, Windsurf, VS Code, Zed), billeteras de criptomonedas y frases semilla (MetaMask, Phantom, Coinbase, Exodus, Trust Wallet), datos de navegador (cookies, credenciales guardadas) y aplicaciones de mensajería (Slack, Discord, Telegram).
Socket reportó que el malware usaba una fuerte ofuscación por cadena mediante el algoritmo de cifrado ChaCha20-Poly1305, lo que dificultaba la ingeniería inversa del código. Según Jscrambler, el compromiso fue posible debido a credenciales de publicación npm comprometidas, que la empresa ha revocado. Tras el incidente, se implementaron controles de seguridad adicionales en el pipeline de publicación.
Jscrambler recomienda que los desarrolladores que hayan utilizado los paquetes npm maliciosos traten sus entornos como comprometidos, roten todos los secretos y restauren desde copias de seguridad seguras. La compañía insta a sus clientes a asegurarse de que están utilizando la última versión del producto.