
Escáner y parcheador automatizado basado en SSH para vulnerabilidades LPE del kernel de Linux CVE-2026-43284 y CVE-2026-43500, con descubrimiento de múltiples hosts, detección de escalada de privilegios y mitigación mediante listas negras de módulos.
Aviso: Esta herramienta está diseñada específicamente para auditorías de seguridad internas legítimas. El uso sin autorización de sistemas que no son de su propiedad es una infracción. Desarrollada por Gagaltotal666 - GhostGTR666.
Esta herramienta identifica y mitiga dos vulnerabilidades de Escalada de Privilegios Local (LPE) en el kernel de Linux:
f4c50a4034e6 del 2026-05-05)/etc/modprobe.d/| Característica | Descripción |
|---|---|
| Escáner Multi-Host | Escanea subredes completas (CIDR) o listas de IP específicas en paralelo |
| Descubrimiento TCP Ping | Detección automática de hosts activos antes de SSH (se puede omitir con --skip-discovery) |
| Auditoría Profunda | Análisis de versión del kernel, estado de módulos, parche upstream, nivel de privilegios |
| Evaluación de Vulnerabilidades | Clasificación automática de estado: VULNERABLE, MITIGATED, LIKELY_PATCHED, POSSIBLY_SAFE, MODULE_NOT_LOADED |
| Mitigación Automatizada | Bloquear módulos, descargar y vaciar page-cache con un solo --patch |
| Inyección Sudo Zero-Touch | Inyección automática de contraseña vía sudo -S — no requiere configuración NOPASSWD |
| Detección Inteligente de Autenticación | Detección automática de escalada de privilegios (root, sudo NOPASSWD, sudo con contraseña) |
| Validación CLI | Pre-verificación de errores tipográficos, validación de archivos de clave SSH (evita known_hosts falsos) |
| Ejecución en Paralelo | Pool de hilos para escaneo y operaciones SSH (20 workers por defecto) |
| Informes JSON | Exportación de resultados completos de auditoría a formato JSON |
| Salida Legible | Salida con colores + resumen PrettyTable (fallback automático si la librería no está disponible) |
| Manejo de Señales | Apagado elegante vía SIGINT/SIGTERM |
Python 3.8 o superior
Librerías: paramiko, colorama, prettytable
python3 -m venv .venv
source .venv/bin/activate
# Clonar repositorio
git clone https://github.com/gagaltotal/dirtyfrag-scanner.git
cd dirtyfrag-scanner
# Instalar dependencias
pip install -r requirements.txt
# o
pip install paramiko colorama prettytable

Detecta vulnerabilidades sin modificar nada en el servidor objetivo.
# Usando Contraseña
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!'
# Usando Clave SSH
python3 dirtyfrag_scanner.py --subnet 10.134.205.0/24 --user root --key ~/.ssh/id_rsa
# Usando ambos (contraseña de respaldo si la clave falla)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --key ~/.ssh/id_rsa
# Escanear IP Específicas (sin descubrimiento)
python3 dirtyfrag_scanner.py --hosts 192.168.1.10,192.168.1.20 --user admin --password 'pass'
Ejecuta la auditoría y aplica directamente la mitigación en servidores vulnerables.
# Parche usando Contraseña (INYECCIÓN SUDO AUTOMÁTICA, SIN NECESIDAD DE NOPASSWD)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!' --patch
# Parche usando Inicio de Sesión Root
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Parche con workers personalizados (escaneo más rápido)
python3 dirtyfrag_scanner.py --subnet 192.168.0.0/16 --user admin --password 'pass' --patch --workers 50
--subnet CIDR Escanear subred CIDR (p. ej., 192.168.1.0/24)
--hosts IP[,IP,...] Escanear IP específicas (separadas por comas, sin espacios)
--user USERNAME Usuario SSH (obligatorio)
--password PASSWORD Contraseña SSH (use comillas si hay caracteres especiales)
--key PATH Ruta a la clave privada SSH (p. ej., ~/.ssh/id_rsa, ¡no known_hosts!)
--port PORT Puerto SSH personalizado (por defecto: 22)
--timeout SECONDS Tiempo de espera de conexión SSH (por defecto: 10, máximo: 300)
--skip-discovery Omitir descubrimiento TCP ping, ir directamente a SSH en todas las IP
--workers NUM Número de workers SSH en paralelo (por defecto: 20, mínimo: 1, máximo: 100)
--patch Aplicar mitigación en hosts vulnerables
--output FILE Guardar resultados de auditoría en archivo JSON
Esta herramienta está diseñada para funcionar en diversos entornos de servidores SSH sin necesidad de modificar sudoers:
Root Directo (recomendado)
--user root --key ~/.ssh/id_rsa --patch
Sudo NOPASSWD
--user ubuntu --key ~/.ssh/id_rsa --patch
/etc/sudoers ya configurado con NOPASSWDsudo -nSudo con Inyección de Contraseña (Zero-Touch) ⭐
--user ubuntu --password 'mypass' --patch
/etc/sudoers estándar: ALL=(ALL) ALLsudo -S -p ''Híbrido (Clave + Contraseña)
--user ubuntu --key ~/.ssh/id_rsa --password 'mypass' --patch
Cuando se usa la bandera --patch, la herramienta ejecuta los siguientes pasos en orden:
/etc/modprobe.d/dirtyfrag.conf antiguo (si existe)/etc/modprobe.d/dirtyfrag.conf:
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
chmod 644 en el archivo de configuraciónrmmod esp4 (omitir si no está cargado)rmmod esp6 (omitir si no está cargado)rmmod rxrpc (omitir si no está cargado)echo 3 > /proc/sys/vm/drop_cachesNota: Si el módulo sigue cargado después de rmmod, se notificará al usuario que puede ser necesario reiniciar.
──────────────────────────────────────────────────────────
Host 1/2: 10.134.205.163 (ubuntu-web-01)
──────────────────────────────────────────────────────────
OS : Ubuntu 22.04.4 LTS
Kernel : 6.8.0-111-generic
Priv : user
CVE-2026-43284 (xfrm-ESP) [POSSIBLY_SAFE]
esp4 cargado : no
esp6 cargado : no
Mitigación : NO aplicada
Parche upstream: NO incluido (<6.15)
CVE-2026-43500 (RxRPC) [VULNERABLE]
rxrpc cargado : SÍ
Mitigación : NO aplicada
Nota: No existe parche upstream aún — la mitigación es la ÚNICA solución
[✓] ¡Mitigación aplicada con éxito!
[Verificación de privilegios] OK (usando: sudo (auto-pass))
[Limpiar ruta objetivo] OK
[Escribir configuración modprobe] OK
[Verificar configuración escrita] OK (3 entradas)
[Establecer permisos de archivo] OK
[Descargar módulo esp4] Omitido (no cargado o ya eliminado)
[Descargar módulo esp6] Omitido (no cargado o ya eliminado)
[Descargar módulo rxrpc] Descargado
[Vaciar page cache] OK
[Verificación final] Archivo de configuración válido
[Verificación final] Todos los módulos vulnerables descargados
[Resultado] Mitigación aplicada con éxito
════ RESUMEN ════
+----------------+-------------------+------+------------+------------+----------+
| Host | OS/Kernel | Priv | CVE-43284 | CVE-43500 | ¿Parcheado? |
+----------------+-------------------+------+------------+------------+----------+
| 10.134.205.163 | Ubuntu 22.04.4 | user | POSSIBLY_S | VULNERABLE | SÍ ✓ |
| 10.134.205.164 | Ubuntu 22.04.4 | user | VULNERABLE| VULNERABLE | FALLÓ ✗ |
| 10.134.205.165 | Debian 12 | root | MITIGATED | MITIGATED | — |
+----------------+-------------------+------+------------+------------+----------+
════ ESTADÍSTICAS ════
Hosts escaneados : 3
Errores : 0
Vulnerables 43284 : 1
Vulnerables 43500 : 2
Mitigaciones OK : 1
Mitigaciones FALLIDAS: 1
└─ 1 falló debido a privilegios insuficientes
Duración : 12.4s
Use la bandera --output para guardar los resultados completos de la auditoría:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --output report.json
{
"scan_time": "2026-05-12 14:23:45",
"tool": "DirtyFrag Scanner v1.0",
"cves": ["CVE-2026-43284", "CVE-2026-43500"],
"total_hosts": 3,
"results": [
{
"host": "10.134.205.163",
"hostname": "ubuntu-web-01",
"os": "Ubuntu 22.04.4 LTS",
"kernel": "6.8.0-111-generic",
"kernel_v": [6, 8, 0],
"is_root": false,
"cve_43284": {
"status": "POSSIBLY_SAFE",
"esp4_loaded": false,
"esp6_loaded": false,
"mitigation_applied": false,
"upstream_patched": false
},
"cve_43500": {
"status": "VULNERABLE",
"rxrpc_loaded": true,
"mitigation_applied": false
},
"patch_applied": true,
"patch_msg": "...",
"error": null
}
]
}
# INCORRECTO
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa.pub
# CORRECTO (use la clave privada, no .pub)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa
El archivo que proporcionó no es una clave privada. Verifique:
.pub (clave pública)known_hosts-----BEGIN PRIVATE KEY----- o -----BEGIN RSA PRIVATE KEY-----# INCORRECTO
python3 dirtyfrag_scanner.py --user ghostgtr666--password 'pass' --subnet 192.168.1.0/24
# CORRECTO
python3 dirtyfrag_scanner.py --user ghostgtr666 --password 'pass' --subnet 192.168.1.0/24
El usuario no tiene acceso sudo, o no se proporcionó la contraseña cuando era necesaria:
# Opción 1: Use root directamente
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Opción 2: Proporcione la contraseña para inyección automática de sudo
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --patch
# Opción 3: Configure NOPASSWD en /etc/sudoers
echo 'admin ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
Aumente --timeout:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --timeout 30
Algunas distribuciones pre-compilan el kernel sin los módulos esp4/esp6/rxrpc. Verifique manualmente:
# En el host objetivo
cat /proc/cmdline | grep -i module
lsmod | grep -E 'esp4|esp6|rxrpc'
python3 dirtyfrag_scanner.py \
--subnet 192.168.100.0/24 \
--user monitoring \
--password 'monitoring123' \
--workers 30 \
--output full-audit.json
python3 dirtyfrag_scanner.py \
--subnet 10.0.0.0/16 \
--user root \
--key ~/.ssh/prod_rsa \
--patch \
--workers 50 \
--output emergency-patch.json
python3 dirtyfrag_scanner.py \
--hosts 192.168.1.10,192.168.1.20,192.168.1.30 \
--user ubuntu \
--key ~/.ssh/dev_rsa \
--output critical-servers.json
python3 dirtyfrag_scanner.py \
--subnet 192.168.50.0/24 \
--user deploy \
--key ~/.ssh/deploy_ed25519 \
--password 'deploy@backup' \
--patch \
--output deploy-scan.json
Desarrollada por Gagaltotal666 - GhostGTR666
GitHub: github.com/gagaltotal
Aviso: Esta herramienta es solo para auditorías de seguridad legítimas y autorizadas. El usuario es responsable del uso de esta herramienta.