Virus se propaga automáticamente y queda alojado para siempre en los repositorios.
Investigadores de Socket informaron sobre un nuevo ataque a la ecosistema de npm, en el que más de 40 paquetes resultaron infectados con código malicioso incrustado. El mecanismo de compromiso fue cuidadosamente diseñado: se usó la función NpmModule.updatePackage, que descargaba el archivo del paquete, modificaba sus metadatos en package.json, insertaba un script adicional llamado bundle.js, y luego reempaquetaba el contenido y volvía a publicar la versión actualizada. Este proceso permitía incrustar código troyano sin ser detectado y contagiar automáticamente a proyectos dependientes.
El objetivo del ataque era robar credenciales y tokens de desarrolladores. El script malicioso descargaba y ejecutaba TruffleHog —una herramienta legítima para buscar secretos— que los atacantes usaron para escanear sistemas en busca de claves de acceso. Entre los datos objetivos estaban variables de entorno con tokens de GitHub, npm y también credenciales de AWS. El mecanismo funcionaba tanto en Windows como en Linux, lo que aumentó considerablemente el alcance del ataque.
Bundle.js interactuaba directamente con servicios: verificaba tokens de npm mediante el endpoint whoami, consultaba la API de GitHub cuando había acceso e incluso realizaba peticiones a los metadatos de plataformas en la nube para extraer claves temporales desde entornos CI/CD. Los datos obtenidos se enviaban a un servidor externo mediante un webhook especialmente preparado. Además, el script creaba un nuevo workflow en el directorio .github/workflows, que quedaba fijado en el repositorio y podía ejecutar la exfiltración en cada ejecución del pipeline, lo que convertía la amenaza en persistente incluso después de eliminar la infección original.
La lista de paquetes afectados fue amplia e incluyó proyectos como
angulartics2@14.1.2, @ctrl/react-adsense@2.0.2, ngx-toastr@19.0.2, json-rules-engine-simplified, koa2-swagger-ui, rxnt-authentication, react-jsonschema-form-extras, swc-plugin-component-annotatey muchos otros. Bajo ataque también cayeron bibliotecas populares de la comunidad NativeScript, incluyendo ui-collectionview y ui-material-core. La presencia de tantas dependencias con código malicioso genera una infección en cascada: los proyectos dependientes reciben automáticamente el troyano, incluso si no sospechan de su existencia.
Expertos de StepSecurity subrayaron que preocupa especialmente el carácter autorreplicante del ataque: el mecanismo incrustado puede integrarse automáticamente en nuevas compilaciones, provocando una reacción en cadena de infecciones en toda la ecosistema de npm. Este modelo aumenta significativamente el riesgo de un efecto de compromiso a gran escala.
Se recomienda a los desarrolladores auditar sus entornos, comprobar la presencia de los paquetes mencionados y, si es necesario, revocar y regenerar inmediatamente tokens de npm, claves de GitHub y secretos en la nube, ya que podrían haber sido exfiltrados por los atacantes. Sin estos pasos, la amenaza puede persistir dentro de los pipelines CI, otorgando a los atacantes acceso a artefactos y datos confidenciales.
Al mismo tiempo de este incidente, el grupo de trabajo Rust Security Response advirtió sobre una campaña de phishing contra usuarios de crates.io. Los atacantes enviaban correos desde un dominio falsificado rustfoundation[.]dev, alegando que la infraestructura estaba comprometida y pidiendo visitar un enlace para cambiar contraseñas. En realidad, la página imitaba la autenticación de GitHub y estaba diseñada para robar credenciales. La auténtica Rust Foundation no está relacionada con ese dominio y declaró que la infraestructura de crates.io funciona con normalidad, y que la actividad sospechosa está siendo monitorizada. El dominio falsificado actualmente no está disponible, pero la campaña demostró que los atacantes usan la confianza en proyectos oficiales para lanzar ataques contra desarrolladores.
Así, la ecosistema de código abierto se enfrentó simultáneamente a dos ataques —la compromisión de paquetes npm y el phishing contra la comunidad Rust— lo que confirma la tendencia al aumento de amenazas en las cadenas de suministro de software.