
Detección de amenazas en la cadena de suministro de npm/PyPI en tiempo real. Análisis de cadenas de comportamiento, escaneo de AST, fuentes de IOC y motor de puntuación compuesta.
Instalación | Uso | Características | VS Code | CI/CD
Los ataques a la cadena de suministro de npm y PyPI están explotando. Shai-Hulud comprometió más de 25K repositorios en 2025. Las herramientas existentes detectan amenazas pero no ayudan a responder.
MUAD'DIB combina 22 escáneres paralelos (278 reglas de detección), un motor de desofuscación, análisis de flujo de datos entre módulos, puntuación compuesta (21 reglas compuestas) y un sandbox gVisor/Docker para detectar amenazas conocidas y patrones de comportamiento sospechosos en paquetes npm y PyPI. Existe un clasificador XGBoost en el código base, pero está actualmente inactivo (ver Evaluación).
MUAD'DIB es un escáner de cadena de suministro gratuito, abierto y totalmente auditable para npm y PyPI. Detecta amenazas conocidas (más de 225,000 IOCs), RCE en tiempo de instalación, flujos de robo de credenciales seguido de exfiltración, payloads ofuscados y otros patrones de comportamiento sospechosos — localmente, sin telemetría.
Está licenciado bajo AGPL-3.0; hay disponible una licencia comercial para organizaciones que necesiten integrarlo en un producto propietario o ejecutarlo como un servicio alojado cerrado (ver Licencia).
Deliberadamente no intenta hacerlo todo — ver Alcance para saber exactamente qué detecta y qué no.
Detecta (npm y PyPI): paquetes maliciosos conocidos (coincidencia de IOC por nombre + SHA256), typosquats, RCE en tiempo de instalación (scripts de ciclo de vida preinstall/postinstall, curl | sh, tiempo de importación en Python, binding.gyp), lectura de credenciales seguida de exfiltración por red (intra- y entre archivos), payloads ofuscados / de alta entropía / stub-loader, droppers binarios (chmod +x + exec/spawn) y marcadores de evasión anti-análisis.
Fuera de alcance: ataques solo de navegador (DOM/window, sin API de Node.js), el contenido de binarios nativos / WASM (sin análisis binario), paquetes desconocidos de día cero (el feed de IOCs es reactivo) y ecosistemas que no sean npm/PyPI (RubyGems, Maven, Go). El fingerprinting anti-sandbox decidido y los payloads remotos de múltiples etapas son riesgos conocidos de falsos negativos. Detalle completo: Modelo de amenazas.
Sin telemetría. Tu código y los resultados de los escaneos nunca salen de tu máquina — MUAD'DIB solo descarga feeds de inteligencia de amenazas (muaddib update) y, para la puntuación, lee metadatos públicos del registro npm. Las alertas por webhook son opcionales.
npm install -g muaddib-scanner
git clone https://github.com/DNSZLSK/muad-dib
cd muad-dib
npm install
npm link
muaddib scan .
muaddib scan /ruta/al/proyecto
Escanea tanto dependencias npm (package.json, node_modules) como Python (requirements.txt, setup.py, pyproject.toml).
muaddib
muaddib install <paquete>
muaddib install lodash axios --save-dev
muaddib install paquete-sospechoso --force # Forzar instalación a pesar de las amenazas
Escanea los paquetes en busca de amenazas ANTES de instalarlos. Bloquea paquetes maliciosos conocidos.
Cada escaneo muestra una puntuación de riesgo de 0 a 100:
[SCORE] 58/100 [***********---------] HIGH
muaddib scan . --explain
Muestra el ID de la regla, la técnica MITRE ATT&CK, las referencias y el playbook de respuesta para cada detección.
muaddib scan . --json > resultados.json # JSON
muaddib scan . --html reporte.html # HTML
muaddib scan . --sarif resultados.sarif # SARIF (GitHub Security)
muaddib scan . --fail-on critical # Fallar solo en CRITICAL
muaddib scan . --fail-on high # Fallar en HIGH y CRITICAL (por defecto)
muaddib scan . --paranoid
Detección ultraestricta con menor tolerancia. Detecta cualquier acceso a red, ejecución de subprocesos, evaluación dinámica de código y acceso a archivos sensibles.
muaddib scan . --webhook "https://discord.com/api/webhooks/..."
Filtrado estricto (v2.1.2): alertas solo para coincidencias de IOC, amenazas confirmadas por sandbox o exfiltración de canary tokens. Triaje por prioridad (v2.10.21): P1 (rojo, IOC/sandbox/canary), P2 (naranja, puntuación alta/compuestos), P3 (amarillo, resto).
muaddib scan . --temporal-full # Las 4 características temporales
muaddib scan . --temporal # Detección de scripts de ciclo de vida repentinos
muaddib scan . --temporal-ast # Diferencia de AST entre versiones
muaddib scan . --temporal-publish # Anomalía en la frecuencia de publicación
muaddib scan . --temporal-maintainer # Detección de cambios de mantenedor
Detecta ataques a la cadena de suministro antes de que aparezcan en las bases de datos de IOCs analizando los cambios entre versiones de paquetes. Ver Metodología de evaluación para más detalles.
muaddib sandbox <nombre-del-paquete>
muaddib sandbox <nombre-del-paquete> --strict
Análisis dinámico en un contenedor Docker aislado: strace, tcpdump, diff del sistema de archivos, canary tokens, entorno consciente de CI y precarga con monkey-patching para detección de bombas de tiempo (múltiples ejecuciones en desplazamientos de [0h, 72h, 7d]).
muaddib watch . # Monitoreo en tiempo real
muaddib daemon # Modo daemon (auto-escaneo de npm install)
muaddib update # Actualizar IOCs (rápido, ~5s)
muaddib scrape # Actualización completa de IOCs (~5min)
muaddib diff HEAD~1 # Comparar amenazas con el commit anterior
muaddib init-hooks # Hooks de pre-commit (husky/pre-commit/git)
muaddib scan . --breakdown # Descomposición de puntuación explicable
muaddib replay # Validación de ground truth (90/94 TPR@3, v2.11.48)