5 puntos por GN⁺ 2025-09-17 | Aún no hay comentarios. | Compartir por WhatsApp
  • Se produjo un ataque a la cadena de suministro en el ecosistema de NPM en el que se inyectó malware autorreplicante en más de 40 paquetes, incluido el popular @ctrl/tinycolor, lo que puede desencadenar una infección en cadena de secretos del entorno de desarrollo e incluso credenciales de CI/CD. Las versiones comprometidas ya fueron eliminadas de npm
  • La carga útil del ataque ejecuta de forma asíncrona durante el proceso de instalación de npm un bundle de Webpack (bundle.js, ~3.6MB) y realiza una recolección amplia de credenciales mediante variables de entorno, el sistema de archivos y SDKs de nube
  • La lógica maliciosa usa NpmModule.updatePackage para forzar el parcheo y despliegue de otros paquetes, provocando propagación en cascada, e inyecta un workflow shai-hulud en GitHub Actions para robar secretos de la organización mediante toJSON(secrets)
  • Los datos recolectados se exfiltran mediante la creación del repositorio público de GitHub Shai-Hulud, disfrazándose como actividad de desarrollo legítima y con alta capacidad de evasión de detección
  • Opera de forma encubierta mediante acceso a tokens y endpoints de metadatos de AWS/GCP/Azure/NPM/GitHub, además de búsqueda de secretos basada en TruffleHog
  • Se exige la eliminación inmediata de paquetes, limpieza de repositorios y rotación total de credenciales, junto con revisión de logs de CloudTrail/GCP Audit, bloqueo de webhooks e implementación de políticas de protección de ramas/Secret Scanning/enfriamiento

Affected Packages

  • Se reportaron 195 paquetes/versiones en total; entre los principales están @ctrl/tinycolor(4.1.1, 4.1.2), múltiples paquetes del namespace @ctrl/, módulos de @crowdstrike/, además de ngx-bootstrap/ngx-toastr/ng2-file-upload/ngx-color en todo el ecosistema de Angular/UI web, el stack móvil de @nativescript-community/ y @nstudio/, el toolchain de ciencias de la vida de teselagen/, ember-*, koa2-swagger-ui, pm2-gelf-json, wdio-web-reporter y otros
  • Para la versión exacta de cada paquete, se debe consultar la tabla del texto original y verificar con precisión si esas versiones están en uso
    • Ejemplos: @ctrl/ngx-emoji-mart 9.2.1, 9.2.2, @ctrl/qbittorrent 9.7.1, 9.7.2, ngx-bootstrap 18.1.4, 19.0.3–20.0.5, ng2-file-upload 7.0.2–9.0.1 y otros de amplio alcance

Immediate Actions Required

Identify and Remove Compromised Packages

  • Verificar si existen paquetes comprometidos en el proyecto: revisar con npm ls @ctrl/tinycolor, etc.
  • Eliminar de inmediato los paquetes comprometidos: ejecutar npm uninstall @ctrl/tinycolor, etc.
  • Buscar hashes conocidos de bundle.js para revisar rastros locales: usar sha256sum | grep 46faab8a...

Clean Infected Repositories

  • Eliminar el workflow malicioso de GitHub Actions: quitar .github/workflows/shai-hulud-workflow.yml
  • Detectar y borrar la rama remota shai-hulud creada en el repositorio: después de git ls-remote ... | grep shai-hulud, ejecutar git push origin --delete shai-hulud

Rotate All Credentials Immediately

  • Es necesaria la rotación total de tokens de NPM, secretos de GitHub PAT/Actions, claves SSH, credenciales de AWS/GCP/Azure, cadenas de conexión a bases de datos, tokens de terceros y secretos de CI/CD
  • También se requiere la rotación completa de los elementos almacenados en AWS Secrets Manager/GCP Secret Manager

Audit Cloud Infrastructure for Compromise

  • AWS: revisar en CloudTrail el momento y patrón de llamadas a BatchGetSecretValue, ListSecrets y GetSecretValue, y usar el IAM Credential Report para detectar creación o uso anómalo de claves
  • GCP: revisar en Audit Logs los accesos a Secret Manager y confirmar si existen eventos CreateServiceAccountKey

Aún no hay comentarios.

Aún no hay comentarios.