Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
OreNPMGuard — Defensa contra el ataque a la cadena de suministro Shai-Hulud | Kitploit
Herramientas/GitHubGitHub/rapticore/orenpmguard
Gestión de Indicadores de Compromiso (IOC)Escáneres de VulnerabilidadesAnálisis de CódigoAnálisis de MalwareDevSecOpsInteligencia de AmenazasSeguridad de Cadena de SuministroAprendizaje y EducaciónRespuesta a Incidentes
GitHubrapticore/orenpmguard

OreNPMGuard

Defensa contra el ataque a la cadena de suministro Shai-Hulud

134hace 7 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

OreNPMGuard - Escáner de Paquetes Shai-Hulud

Versión 2.0.0 - Detección Shai-Hulud 2.0 y Sistema de Prevención Mejorado

Una herramienta de seguridad para detectar paquetes npm comprometidos en los ataques a la cadena de suministro Shai-Hulud (septiembre de 2025 original y Shai-Hulud 2.0 noviembre de 2025). Escanea tanto archivos package.json como package-lock.json para detectar versiones instaladas exactas e Indicadores de Compromiso (IoC). Disponible en implementaciones Python y Node.js con configuración YAML centralizada para un mantenimiento sencillo.

Última actualización: 24 de noviembre de 2025 - 738+ paquetes comprometidos rastreados con 1,291 combinaciones únicas paquete@versión. Ahora detecta tanto las variantes originales de Shai-Hulud como las de Shai-Hulud 2.0.

Para escaneo multi-ecosistema, consulte ore-mal-pkg-inspector.

🔗 Proyectos Relacionados

Para escaneo de paquetes maliciosos multi-ecosistema (npm, PyPI, Maven, RubyGems, Go, Cargo), consulte: ore-mal-pkg-inspector - Escáner completo de paquetes maliciosos con inteligencia de amenazas dinámica.

OreNPMGuard se enfoca específicamente en la defensa contra ataques Shai-Hulud para paquetes npm.

🚨 Acerca de los Ataques Shai-Hulud

Shai-Hulud es un gusano autorreplicante que comenzó a comprometer paquetes npm el 14 y 15 de septiembre de 2025, representando el primer ataque autopropagante exitoso en el ecosistema npm y uno de los ataques más graves a la cadena de suministro de JavaScript observados hasta la fecha. Nombrado en honor a los gusanos de arena gigantes de la serie Dune de Frank Herbert, este malware ha evolucionado en múltiples variantes.

Shai-Hulud Original (septiembre de 2025)

El ataque original infectó 200+ paquetes npm (según lo rastreado en esta herramienta) con múltiples versiones afectadas por paquete.

Shai-Hulud 2.0 (noviembre de 2025) - NUEVO

Una nueva variante surgió en noviembre de 2025 con cambios significativos:

  • 738+ paquetes comprometidos con 1,291 combinaciones únicas paquete@versión
  • 25,000+ repositorios afectados en ~350 usuarios únicos
  • Nueva fase de ejecución: Utiliza scripts preinstall (no solo postinstall)
  • Nuevos archivos de payload: setup_bun.js y bun_environment.js (además de bundle.js)
  • Persistencia mejorada: Crea runners autoalojados llamados 'SHA1HULUD' y nuevos patrones de workflow de GitHub
  • Orientación multi-nube: Recolección de credenciales en AWS, Azure y GCP
  • Escalada de privilegios en Docker: Intenta obtener acceso root mediante contenedores privilegiados
  • Paquetes subidos entre el 21 y 23 de noviembre de 2025

Referencia: Wiz Research - Artículo del Blog Shai-Hulud 2.0

🦠 Cómo Funciona el Ataque

Paciente Cero: El ataque comenzó con el paquete rxnt-authentication publicado el 14 de septiembre de 2025 a las 17:58:50 UTC por la cuenta npm comprometida "techsupportrxnt".

Cadena de Ataque (Shai-Hulud Original):

  1. Instalación: El paquete malicioso ejecuta el script postinstall que ejecuta bundle.js (payload JavaScript de 3MB+)
  2. Recolección de Credenciales: Utiliza TruffleHog para escanear tokens de GitHub/npm, credenciales de AWS/GCP/Azure, variables de entorno y claves de nube expuestas por IMDS
  3. Exfiltración de Datos: Crea un repositorio público "Shai-Hulud" en la cuenta de GitHub de la víctima con secretos robados en data.json (codificado en base64 doble)
  4. Persistencia: Inyecta un workflow malicioso de GitHub Actions (.github/workflows/shai-hulud-workflow.yml) que exfiltra secretos del repositorio a webhook[.]site
  5. Migración de Repositorios: Fuerza que los repositorios organizacionales privados se conviertan en repositorios personales públicos con el sufijo "-migration" y la descripción "Shai-Hulud Migration"
  6. Propagación del Gusano: Utiliza tokens npm robados para inyectar malware en otros paquetes mantenidos por la víctima, incrementando números de versión y añadiendo hooks postinstall

Cadena de Ataque (Shai-Hulud 2.0 - noviembre de 2025):

  1. Instalación: El paquete malicioso ejecuta el script preinstall que ejecuta setup_bun.js o bun_environment.js (nuevos archivos de payload)
  2. Creación de Archivos de Datos: Crea archivos cloud.json, contents.json, environment.json y truffleSecrets.json
  3. Recolección de Credenciales: Orientación multi-nube (AWS, Azure, GCP) utilizando SDKs oficiales, extrayendo credenciales de archivos de configuración, variables de entorno e IMDS
  4. Registro de Runner Autoalojado: Registra la máquina infectada como runner autoalojado llamado 'SHA1HULUD'
  5. Inyección de Workflow de GitHub:
    • Crea .github/workflows/discussion.yaml con runner autoalojado para acceso de puerta trasera
    • Crea .github/workflows/formatter_*.yml para exfiltración de secretos (luego elimina el workflow para ocultar la actividad)
  6. Escalada de Privilegios en Docker: Intenta obtener acceso root mediante docker run --rm --privileged -v /:/host

🎯 Qué se Roba

  • Credenciales de Desarrollo: PAT de GitHub (ghp_*, gho_*), tokens de autenticación npm
  • Credenciales de Nube: Claves de acceso y tokens de AWS, GCP, Azure
  • Claves API: Atlassian, Datadog y otras credenciales de servicios
  • Información del Sistema: Variables de entorno, detalles del host, cuentas de usuario
  • Código Fuente: Repositorios privados hechos públicos o clonados

📊 Escala del Impacto

Shai-Hulud Original (septiembre de 2025):

  • 200+ paquetes comprometidos en esta base de datos de seguimiento (incluyendo paquetes populares como @ctrl/tinycolor, ngx-bootstrap)
  • Múltiples cuentas de GitHub comprometidas (el número exacto varía según la fuente de reporte)
  • Repositorios públicos creados con la etiqueta "Shai-Hulud Migration"
  • Desarrolladores potencialmente afectados a través de dependencias de paquetes

Shai-Hulud 2.0 (noviembre de 2025):

  • 738+ paquetes comprometidos con 1,291 combinaciones únicas paquete@versión
  • 25,000+ repositorios afectados creados en ~350 usuarios únicos
  • 1,000+ repositorios nuevos añadidos cada 30 minutos durante las horas iniciales de la campaña
  • Afecta a paquetes de ecosistemas importantes: Zapier, ENS Domains, PostHog, Postman, AsyncAPI y más
  • Robo de credenciales multi-nube (AWS, Azure, GCP)
  • Intentos de escalada de privilegios en Docker

Robo de Credenciales Verificado (de ~20,000 repositorios analizados):

  • 775 tokens de acceso de GitHub comprometidos
  • 373 credenciales de AWS expuestas
  • 300 credenciales de GCP expuestas
  • 115 credenciales de Azure expuestas

⚠️ Advertencia de Exfiltración Cruzada entre Víctimas

CRÍTICO: Wiz Research ha confirmado que se está produciendo exfiltración cruzada entre víctimas. Esto significa:

  • Los secretos robados de una víctima pueden publicarse en repositorios propiedad de una víctima diferente y no relacionada
  • Si encuentra datos sospechosos en sus repositorios de GitHub, pueden pertenecer a otro usuario comprometido
  • Sus datos pueden haber sido exfiltrados a repositorios que usted no posee
  • Esto complica la atribución y la respuesta a incidentes

Implicación para la Investigación: Al revisar datos exfiltrados en sus repositorios, verifique si los datos realmente pertenecen a su organización o a otra víctima.

🔗 Conexión con Ataques Anteriores

Este ataque está directamente vinculado al compromiso s1ngularity/Nx de agosto de 2025, donde el robo inicial de tokens de GitHub permitió el ataque más amplio a la cadena de suministro. Muchas víctimas iniciales de Shai-Hulud eran víctimas conocidas del ataque s1ngularity. Los investigadores de seguridad también notan la integración de contenido generado por IA dentro de la campaña, con una confianza moderada de que se utilizó un LLM para generar el script bash malicioso.

📅 Cronología del Ataque

Campaña Original de Shai-Hulud:

  • 26 de agosto de 2025: Ocurre el compromiso s1ngularity/Nx (ataque precursor)
  • 14 de septiembre de 2025 a las 17:58 UTC: Se publica el primer paquete malicioso rxnt-authentication ("Paciente Cero")
  • 15 de septiembre de 2025: Investigadores de seguridad detectan y reportan el ataque
  • 15 y 16 de septiembre de 2025: El gusano se propaga rápidamente por el ecosistema npm
  • 16 de septiembre de 2025: Se confirman más de 180 paquetes comprometidos
  • 17 de septiembre de 2025: Esfuerzos continuos de monitoreo y limpieza
  • 18 de septiembre de 2025: Lanzamiento v1.2.0 con 200 paquetes rastreados y herramientas de prevención mejoradas

Campaña Shai-Hulud 2.0:

  • 21-23 de noviembre de 2025: Paquetes maliciosos subidos al registro npm
  • 24 de noviembre de 2025: Wiz Research y Aikido detectan y reportan el ataque
  • 24 de noviembre de 2025: Lanzamiento v2.0.0 con 738+ paquetes rastreados y capacidades de detección de Shai-Hulud 2.0
  • En curso: GitHub continúa eliminando repositorios creados por el atacante; el atacante continúa creando nuevos repositorios

Inicio Rápido

Requisitos Previos

  • Escáner Python: Requiere PyYAML (pip install pyyaml)
  • Escáner Node.js: Requiere js-yaml (npm install js-yaml)

Escáner Python

root@kitploit:~
# Hacer ejecutable
chmod +x shai_hulud_scanner.py

# Escanear un solo package.json
python3 shai_hulud_scanner.py ./package.json

# Escanear package-lock.json para versiones exactas
python3 shai_hulud_scanner.py ./package-lock.json

# Escanear todo el directorio del proyecto
python3 shai_hulud_scanner.py ./my-project

# Escanear el directorio actual
python3 shai_hulud_scanner.py .

Escáner Node.js

root@kitploit:~
# Instalar dependencias primero
npm install

# Hacer ejecutable
chmod +x shai_hulud_scanner.js

# Escanear un solo package.json
node shai_hulud_scanner.js ./package.json

# Escanear package-lock.json para versiones exactas
node shai_hulud_scanner.js ./package-lock.json

# Escanear todo el directorio del proyecto
node shai_hulud_scanner.js ./my-project

# Escanear el directorio actual
node shai_hulud_scanner.js .

Qué Hace el Escáner

✅ Detección de Coincidencia Exacta: Identifica paquetes con coincidencias exactas de versión con versiones comprometidas conocidas

⚠️ Detección de Riesgo Potencial: Marca paquetes con el mismo nombre pero diferentes versiones (pueden seguir en riesgo)

🔍 Soporte de Doble Archivo: Escanea tanto package.json (dependencias declaradas) como package-lock.json (versiones instaladas exactas)

📦 Cobertura Integral: El escaneo de package-lock.json incluye dependencias anidadas y paquetes transitivos

🔄 Escaneo Recursivo: Escanea automáticamente todos los subdirectorios omitiendo node_modules

📋 Informes Detallados: Muestra nombres de paquetes, versiones, secciones de dependencia y versiones afectadas

🔎 Detección de IoC: Identifica Indicadores de Compromiso tanto para Shai-Hulud original como para Shai-Hulud 2.0:

  • Shai-Hulud Original: Hooks "postinstall": "node bundle.js", archivos bundle.js, shai-hulud-workflow.yml
  • Shai-Hulud 2.0: Hooks "preinstall", archivos setup_bun.js, bun_environment.js, workflows discussion.yaml, formatter_*.yml
  • Común: Referencias a puntos finales de exfiltración webhook.site, patrones de runner SHA1HULUD, escalada de privilegios en Docker

Ejemplos de Salida

🚨 Crítico (Paquetes Comprometidos Encontrados):

root@kitploit:~
🚨 CRÍTICO: Se encontraron 2 paquetes CONFIRMADOS como comprometidos:
   • @ctrl/deluge v7.2.2 en dependencias
     Versiones afectadas: 7.2.2, 7.2.1
   • ngx-bootstrap v19.0.3 en devDependencies
     Versiones afectadas: 18.1.4, 19.0.3, 20.0.4, 20.0.5, 20.0.6, 19.0.4, 20.0.3

⚠️ Advertencia (Desajuste de Versión):

root@kitploit:~
⚠️ ADVERTENCIA: Se encontró 1 paquete con versiones diferentes:
   • @ctrl/deluge v7.2.0 en dependencias
     Versiones afectadas conocidas: 7.2.2, 7.2.1

✅ Limpio:

root@kitploit:~
✅ No se encontraron paquetes afectados

Si Se Encuentran Paquetes Comprometidos

ACCIONES INMEDIATAS:

  1. Detener todo el trabajo de desarrollo en los proyectos afectados
  2. Eliminar paquetes comprometidos: npm uninstall <nombre-paquete>
  3. Limpiar caché de npm: npm cache clean --force
  4. Eliminar node_modules: rm -rf node_modules

ROTACIÓN DE CREDENCIALES:

  1. Tokens de Acceso Personal de GitHub
  2. Tokens de Autenticación npm
  3. Claves SSH
  4. Claves API (AWS, Atlassian, Datadog, etc.)

INVESTIGACIÓN:

  1. Verificar en GitHub si hay repos públicos llamados "Shai-Hulud" o con "Shai-Hulud" en la descripción
  2. Buscar repos con el sufijo "-migration" (Shai-Hulud original)
  3. Revisar los registros de auditoría de GitHub para detectar creación no autorizada de repositorios
  4. Buscar ramas llamadas shai-hulud
  5. Escanear en busca de IoC (Indicadores de Compromiso):
    • Shai-Hulud Original:
      • Buscar "postinstall": "node bundle.js" en archivos package.json
      • Buscar archivos bundle.js (de 3MB+ de tamaño, contienen el payload malicioso)
      • Examinar archivos .github/workflows/shai-hulud-workflow.yml
    • Shai-Hulud 2.0:
      • Buscar hooks "preinstall" en archivos package.json
      • Buscar archivos de payload setup_bun.js y bun_environment.js
      • Verificar archivos de datos: cloud.json, contents.json, environment.json, truffleSecrets.json

Configuración

Los datos de los paquetes están centralizados en affected_packages.yaml. Para añadir nuevos paquetes comprometidos:

  1. Editar affected_packages.yaml
  2. Añadir entradas en el formato:
    root@kitploit:~
    - name: "nombre-paquete"
      versions: ["1.0.0", "1.0.1"]
    
  3. Tanto los escáneres Python como JavaScript utilizarán automáticamente los datos actualizados

Este enfoque centralizado elimina la necesidad de actualizar múltiples archivos cuando se descubren nuevas amenazas.

Opciones de Implementación

Para Equipos de Seguridad

root@kitploit:~
# Crear script de escaneo central
curl -O https://su-dominio.com/shai_hulud_scanner.py
chmod +x shai_hulud_scanner.py

# Escaneo masivo de múltiples proyectos
for dir in /projects/*/; do
    echo "Escaneando $dir"
    python3 shai_hulud_scanner.py "$dir"
done

Integración CI/CD

root@kitploit:~
# Ejemplo de GitHub Actions
- name: Escanear paquetes Shai-Hulud
  run: |
    curl -O https://su-dominio.com/shai_hulud_scanner.js
    npm install js-yaml
    node shai_hulud_scanner.js .
    if [ $? -ne 0 ]; then
      echo "ALERTA DE SEGURIDAD: ¡Paquetes comprometidos detectados!"
      exit 1
    fi

Implementación Empresarial

root@kitploit:~
# Añadir al kit de herramientas de seguridad
cp shai_hulud_scanner.py /usr/local/bin/
cp shai_hulud_scanner.js /usr/local/bin/
cp affected_packages.yaml /usr/local/bin/

# Crear alias para acceso fácil
echo 'alias scan-shai="python3 /usr/local/bin/shai_hulud_scanner.py"' >> ~/.bashrc

Notas Técnicas

  • Plataformas Objetivo: Linux, macOS y Windows (Shai-Hulud 2.0 añade soporte para Windows)
  • Tamaño del Payload: Paquete JavaScript minificado de 3MB+ (original), nuevos payloads en Shai-Hulud 2.0
  • Autopropagación: Primer gusano autorreplicante exitoso en el ecosistema npm
  • Fases de Ejecución: Original usa postinstall, Shai-Hulud 2.0 usa preinstall (aumenta la exposición en entornos de construcción)
  • Dependencias: Python requiere PyYAML, Node.js requiere js-yaml
  • Seguro: Operaciones de solo lectura, no modifica sus archivos
  • Rápido: Optimizado para escaneo rápido de bases de código grandes
  • Preciso: Basado en listas oficiales de IoC de investigadores de seguridad (Wiz Research, Aikido)
  • Componentes Generados por IA: Los investigadores de seguridad evalúan con confianza moderada que se utilizó un LLM para generar partes del script bash malicioso
  • Mecanismos de Persistencia:
    • Original: Workflows de GitHub Actions, ramas maliciosas y migraciones de repositorios
    • Shai-Hulud 2.0: Runners autoalojados, workflows basados en discusión, workflows de formateo
  • Integración en la Nube:
    • Original: Apunta a entornos AWS y GCP utilizando bibliotecas SDK y puntos finales IMDS
    • Shai-Hulud 2.0: Orientación multi-nube (AWS, Azure, GCP) con SDKs oficiales, volcado de gestores de secretos

Indicadores de Compromiso (IoC)

Shai-Hulud Original (septiembre de 2025):

  • Hook postinstall malicioso: "postinstall": "node bundle.js" en package.json
  • Archivo de payload: bundle.js (típicamente JavaScript minificado de 3MB+)
  • Punto final de exfiltración: Referencias a dominios webhook.site
  • Workflow de GitHub: .github/workflows/shai-hulud-workflow.yml para persistencia
  • Nomenclatura de repositorios: Repos con "Shai-Hulud" o sufijos "-migration"
  • Indicadores de rama: Ramas llamadas shai-hulud que contienen commits maliciosos

Shai-Hulud 2.0 (noviembre de 2025):

  • Hook preinstall malicioso: "preinstall": "node setup_bun.js" o "preinstall": "node bun_environment.js" en package.json
  • Nuevos archivos de payload: setup_bun.js, bun_environment.js (además de bundle.js)
  • Archivos de datos: cloud.json, contents.json, environment.json, truffleSecrets.json
  • Workflows de GitHub:
    • .github/workflows/discussion.yaml (con runs-on: self-hosted y RUNNER_TRACKING_ID: 0)
    • .github/workflows/formatter_*.yml (coincidencia de patrones, utilizado para exfiltración de secretos)

Común a Ambas Variantes:

  • Punto final de exfiltración: Referencias a dominios webhook.site
  • Nomenclatura de repositorios: Repos con "Shai-Hulud" en el nombre o descripción

📚 Documentación

  • Notas de la Versión v1.2.0 - Registro de cambios completo y nuevas características
  • Evaluación de Seguridad - Análisis de seguridad integral
  • Guía de Prevención - 490+ líneas de instrucciones de integración
  • Workflow de GitHub Actions - Protección CI/CD automatizada

🛡️ Nuevo en v2.0.0

Detección de Shai-Hulud 2.0

  • Detección de hook preinstall: Detecta scripts preinstall (fase de ejecución de Shai-Hulud 2.0)
  • Detección de nuevos archivos de payload: Escanea en busca de setup_bun.js y bun_environment.js
  • Detección de archivos de datos: Identifica cloud.json, contents.json, environment.json, truffleSecrets.json
  • Escaneo de workflows de GitHub: Detecta patrones de workflow discussion.yaml y formatter_*.yml
  • Detección de runners autoalojados: Identifica registros de runner 'SHA1HULUD'
  • Detección de escalada de privilegios en Docker: Escanea en busca de patrones de ejecución de contenedores privilegiados
  • Compatibilidad hacia atrás: Continúa detectando indicadores de Shai-Hulud original (septiembre de 2025)

Base de Datos de Paquetes Expandida

  • 738+ paquetes comprometidos rastreados (desde 200)
  • 1,291 combinaciones únicas paquete@versión en la base de datos
  • 25,000+ repositorios afectados identificados
  • ~350 usuarios únicos comprometidos

Suite de Prevención Mejorada (desde v1.2.0)

  • Configs multi-formato: JSON, YAML, CSV para diferentes casos de uso
  • Integración con GitHub Actions: Workflow de bloqueo CI/CD automatizado
  • Script de bloqueo independiente: prevention/block-shai-hulud.sh
  • Herramientas de sincronización de paquetes: Actualizaciones automatizadas de inteligencia de amenazas

Capacidades de Detección Mejoradas

  • Escaneo de IoC tanto para variantes originales como de Shai-Hulud 2.0
  • Categorización por severidad (Crítico/Alto/Medio) con identificación de variante
  • Inteligencia de amenazas mejorada con conteos de descargas y vectores de ataque
  • Detección de credenciales multi-nube: Patrones de orientación a AWS, Azure, GCP

Soporte

Para problemas o preguntas:

  • Equipo de Seguridad: [email protected]
  • Desarrollo: [email protected]
Descargar herramienta
  • Volcado de Secretos en la Nube: Utiliza sesiones autenticadas para volcar secretos de AWS Secrets Manager, Google Secret Manager y Azure Key Vault
  • Creación de Repositorios: Crea repositorios con "Shai-Hulud" en la descripción para la exfiltración
  • Examinar .github/workflows/discussion.yaml (con runner autoalojado)
  • Examinar archivos .github/workflows/formatter_*.yml
  • Buscar el nombre del runner 'SHA1HULUD' en los workflows
  • Buscar comandos de escalada de privilegios en Docker (docker run --rm --privileged -v /:/host)
  • Común:
    • Verificar referencias a webhook.site en el código o registros de red
    • Revisar registros de runners autoalojados
    • Verificar credenciales del proveedor de nube y acceso al gestor de secretos
  • Runner autoalojado: Runner llamado 'SHA1HULUD' registrado en máquinas infectadas
  • Escalada de privilegios en Docker: Comandos como docker run --rm --privileged -v /:/host
  • Descripciones de repositorios: Repos con "Shai-Hulud" en la descripción
  • Orientación multi-nube: Intentos de acceso a AWS Secrets Manager, Google Secret Manager, Azure Key Vault
  • Punto final de exfiltración: Referencias a dominios webhook.site (igual que el original)