Software malicioso en NPM: la amenaza silenciosa que lleva 2 años acechando
Cada vez que hablo con desarrolladores sobre ciberseguridad, noto cierta confianza ciega cuando mencionamos repositorios populares. «Si está en NPM, debe ser seguro», me dicen. Pues agárrate, porque investigadores acaban de descubrir malware que llevaba más de dos años en el repositorio NPM, acumulando más de 6.200 descargas. Y lo peor: pasó completamente desapercibido hasta ahora.
El lobo con piel de cordero: paquetes maliciosos que imitan a los legítimos
Kush Pandya, investigador de la firma de seguridad Socket, ha identificado ocho paquetes que utilizaban nombres muy similares a paquetes legítimos ampliamente utilizados. La estrategia es tan vieja como efectiva: hacerse pasar por algo que ya confías. Estos impostores contenían código destructivo diseñado específicamente para corromper datos importantes, eliminar archivos y provocar fallos en los sistemas.
Lo realmente preocupante es que estos paquetes han estado disponibles para descarga durante más de dos años. No es un ataque fugaz, sino una campaña sostenida que ha logrado infiltrarse en el ecosistema JavaScript sin levantar sospechas.
Un arsenal diverso de tácticas maliciosas
«Lo que hace que esta campaña sea particularmente preocupante es la diversidad de vectores de ataque», explica Pandya en su informe. Y tiene toda la razón. Los atacantes no apostaron por una única estrategia, sino que desplegaron un abanico de técnicas diseñadas para impactar diferentes partes del ecosistema JavaScript:
- Eliminación selectiva de archivos: Específicamente dirigida a archivos relacionados con Vue.js, con comandos escritos tanto para Windows como para Linux
- Corrupción de funciones JavaScript: Inyectando datos aleatorios en funciones core
- Sabotaje de almacenamiento del navegador: Un ataque sofisticado de tres archivos que rompía tokens de autenticación, preferencias de usuario, carritos de compra y estado de aplicaciones
- Ataques multifase contra el sistema: Combinando eliminación de archivos del framework Vue.js con apagados forzados del sistema
La estrategia del caballo de Troya moderno
Lo que me parece fascinante (y escalofriante) es la sofisticación del ataque. Algunos payloads fueron programados para activarse sólo en fechas específicas durante 2023, pero en algunos casos una fase programada para comenzar en julio de ese año no tenía fecha de terminación. Como me explicó un colega especializado en ciberseguridad, «es como una bomba de tiempo digital que permanece latente hasta que llega su hora».
Pandya confirma que la amenaza sigue siendo persistente, aunque también matiza: «Dado que todas las fechas de activación ya han pasado (junio 2023–agosto 2024), cualquier desarrollador que siga el uso normal de paquetes hoy activaría inmediatamente los payloads destructivos».
El arte del engaño: paquetes legítimos como cortina de humo
Aquí viene el golpe maestro: el usuario de NPM que subió estos paquetes maliciosos (usando el email 1634389031@qq[.]com) también subió paquetes completamente funcionales y limpios.
Esta táctica es brillante en su perversidad. Al crear una «fachada de legitimidad» mezclando paquetes útiles con otros dañinos, aumentó significativamente las probabilidades de pasar desapercibido. No es solo malware, es ingeniería social aplicada al código.
Los objetivos: las principales comunidades de JavaScript
Los paquetes maliciosos apuntaron directamente a usuarios de algunos de los ecosistemas más grandes para desarrolladores JavaScript, incluyendo React, Vue y Vite. La lista específica de paquetes incluye:
- js-bomb
- js-hood
- vite-plugin-bomb-extend
- vite-plugin-bomb
- vite-plugin-react-extend
- vite-plugin-vue-extend
- vue-plugin-bomb
- quill-image-downloader
Si instalaste alguno de estos paquetes, deberías inspeccionar minuciosamente tus sistemas para asegurarte de que ya no están en ejecución. El problema es que estos paquetes imitan perfectamente herramientas de desarrollo legítimas, lo que hace extremadamente difícil detectarlos.
La lección: no todo lo que brilla en NPM es oro
Este incidente me recuerda algo que repetimos constantemente en el sector de la ciberseguridad pero que muchos desarrolladores siguen pasando por alto: los repositorios de código abierto son objetivos prioritarios para los atacantes.
La confianza que tenemos en estos ecosistemas es precisamente lo que los hace tan atractivos para los ciberdelincuentes. Cuando un desarrollador instala un paquete de NPM, rara vez revisa su código línea por línea. Confiamos en que alguien más ya lo ha hecho.
Y así, con un simple «npm install», podríamos estar abriendo la puerta de nuestros sistemas a un intruso que lleva años perfeccionando su camuflaje.


