
Scanner et correcteur automatisé basé sur SSH pour les vulnérabilités LPE du noyau Linux CVE-2026-43284 et CVE-2026-43500, avec découverte multi-hôtes, détection d'élévation de privilèges et atténuation par liste noire de modules.
Avertissement : Cet outil est conçu exclusivement pour des audits de sécurité internes légitimes. Toute utilisation sans autorisation sur des systèmes qui ne vous appartiennent pas constitue une violation. Développé par Gagaltotal666 - GhostGTR666.
Cet outil identifie et atténue deux vulnérabilités d'élévation de privilèges locaux (LPE) sur le noyau Linux :
f4c50a4034e6 du 2026-05-05)/etc/modprobe.d/| Fonctionnalité | Description |
|---|---|
| Scanner Multi-Hôtes | Scanne un sous-réseau entier (CIDR) ou une liste d'IP spécifiques en parallèle |
| Découverte TCP Ping | Détection automatique des hôtes actifs avant SSH (peut être ignorée avec --skip-discovery) |
| Audit Approfondi | Analyse de la version du noyau, statut des modules, correctif en amont, niveau de privilèges |
| Évaluation des Vulnérabilités | Classification automatique du statut : VULNERABLE, MITIGATED, LIKELY_PATCHED, POSSIBLY_SAFE, MODULE_NOT_LOADED |
| Atténuation Automatisée | Blacklist des modules, déchargement et purge du page-cache avec une seule commande --patch |
| Injection Sudo Zero-Touch | Injection automatique du mot de passe via sudo -S — aucune configuration NOPASSWD requise |
| Détection Intelligente d'Authentification | Détection automatique de l'élévation de privilèges (root, sudo NOPASSWD, sudo avec mot de passe) |
| Validation CLI | Pré-vérification des fautes de frappe, validation du fichier de clé SSH (empêche les faux known_hosts) |
| Exécution Parallèle | Pool de threads pour le scan et les opérations SSH (20 workers par défaut) |
| Rapport JSON | Export des résultats d'audit complets au format JSON |
| Sortie Formatée | Sortie colorée + résumé PrettyTable (repli automatique si la bibliothèque est absente) |
| Gestion des Signaux | Arrêt gracieux via SIGINT/SIGTERM |
Python 3.8 ou plus récent
Bibliothèques : paramiko, colorama, prettytable
python3 -m venv .venv
source .venv/bin/activate
# Cloner le dépôt
git clone https://github.com/gagaltotal/dirtyfrag-scanner.git
cd dirtyfrag-scanner
# Installer les dépendances
pip install -r requirements.txt
# ou
pip install paramiko colorama prettytable

Détecte les vulnérabilités sans modifier quoi que ce soit sur le serveur cible.
# Avec mot de passe
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!'
# Avec clé SSH
python3 dirtyfrag_scanner.py --subnet 10.134.205.0/24 --user root --key ~/.ssh/id_rsa
# Avec les deux (mot de passe de secours si la clé échoue)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --key ~/.ssh/id_rsa
# Scan d'IP spécifiques (sans découverte)
python3 dirtyfrag_scanner.py --hosts 192.168.1.10,192.168.1.20 --user admin --password 'pass'
Exécute l'audit et applique immédiatement l'atténuation sur les serveurs vulnérables.
# Patch avec mot de passe (INJECTION SUDO AUTOMATIQUE, SANS NOPASSWD REQUIS)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!' --patch
# Patch avec connexion root
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Patch avec workers personnalisés (scan plus rapide)
python3 dirtyfrag_scanner.py --subnet 192.168.0.0/16 --user admin --password 'pass' --patch --workers 50
--subnet CIDR Scanne le sous-réseau CIDR (ex. : 192.168.1.0/24)
--hosts IP[,IP,...] Scanne des IP spécifiques (séparées par des virgules, sans espaces)
--user USERNAME Nom d'utilisateur SSH (requis)
--password PASSWORD Mot de passe SSH (utiliser des guillemets si caractères spéciaux)
--key PATH Chemin vers la clé privée SSH (ex. : ~/.ssh/id_rsa, pas known_hosts !)
--port PORT Port SSH personnalisé (défaut : 22)
--timeout SECONDS Délai de connexion SSH (défaut : 10, max : 300)
--skip-discovery Ignore la découverte TCP ping, SSH direct vers toutes les IP
--workers NUM Nombre de workers SSH parallèles (défaut : 20, min : 1, max : 100)
--patch Applique l'atténuation sur les hôtes vulnérables
--output FILE Enregistre les résultats d'audit dans un fichier JSON
Cet outil est conçu pour fonctionner dans divers environnements de serveurs SSH sans nécessiter de modification des sudoers :
Root Direct (recommandé)
--user root --key ~/.ssh/id_rsa --patch
Sudo NOPASSWD
--user ubuntu --key ~/.ssh/id_rsa --patch
/etc/sudoers déjà configuré avec NOPASSWDsudo -nSudo avec Injection de Mot de Passe (Zero-Touch) ⭐
--user ubuntu --password 'mypass' --patch
/etc/sudoers standard : ALL=(ALL) ALLsudo -S -p ''Hybride (Clé + Mot de passe)
--user ubuntu --key ~/.ssh/id_rsa --password 'mypass' --patch
Lorsque le flag --patch est utilisé, l'outil exécute les étapes suivantes dans l'ordre :
/etc/modprobe.d/dirtyfrag.conf (s'il existe)/etc/modprobe.d/dirtyfrag.conf :
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
chmod 644 sur le fichier de configurationrmmod esp4 (ignoré s'il n'est pas chargé)rmmod esp6 (ignoré s'il n'est pas chargé)rmmod rxrpc (ignoré s'il n'est pas chargé)echo 3 > /proc/sys/vm/drop_cachesRemarque : Si un module est toujours chargé après rmmod, l'utilisateur sera informé qu'un redémarrage peut être nécessaire.
──────────────────────────────────────────────────────────
Hôte 1/2 : 10.134.205.163 (ubuntu-web-01)
──────────────────────────────────────────────────────────
OS : Ubuntu 22.04.4 LTS
Noyau : 6.8.0-111-generic
Priv : user
CVE-2026-43284 (xfrm-ESP) [POSSIBLY_SAFE]
esp4 chargé : non
esp6 chargé : non
Atténuation : NON appliquée
Correctif amont : NON inclus (<6.15)
CVE-2026-43500 (RxRPC) [VULNERABLE]
rxrpc chargé : OUI
Atténuation : NON appliquée
Remarque : Aucun correctif en amont n'existe encore — l'atténuation est la SEULE solution
[✓] Atténuation appliquée avec succès !
[Vérification des privilèges] OK (utilisation : sudo (mot de passe auto))
[Nettoyage du chemin cible] OK
[Écriture de la config modprobe] OK
[Vérification de la config écrite] OK (3 entrées)
[Définition des permissions du fichier] OK
[Déchargement du module esp4] Ignoré (non chargé ou déjà supprimé)
[Déchargement du module esp6] Ignoré (non chargé ou déjà supprimé)
[Déchargement du module rxrpc] Déchargé
[Purge du cache de pages] OK
[Vérification finale] Fichier de config valide
[Vérification finale] Tous les modules vulnérables déchargés
[Résultat] Atténuation appliquée avec succès
════ RÉSUMÉ ════
+----------------+-------------------+------+------------+------------+----------+
| Hôte | OS/Noyau | Priv | CVE-43284 | CVE-43500 | Patché ? |
+----------------+-------------------+------+------------+------------+----------+
| 10.134.205.163 | Ubuntu 22.04.4 | user | POSSIBLY_S | VULNERABLE | OUI ✓ |
| 10.134.205.164 | Ubuntu 22.04.4 | user | VULNERABLE| VULNERABLE | ÉCHEC ✗ |
| 10.134.205.165 | Debian 12 | root | MITIGATED | MITIGATED | — |
+----------------+-------------------+------+------------+------------+----------+
════ STATISTIQUES ════
Hôtes scannés : 3
Erreurs : 0
Vulnérables 43284 : 1
Vulnérables 43500 : 2
Atténuations OK : 1
Atténuations ÉCHEC : 1
└─ 1 échec dû à des privilèges insuffisants
Durée : 12,4 s
Utilisez le flag --output pour enregistrer les résultats d'audit complets :
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
}
]
}
# INCORRECT
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa.pub
# CORRECT (utiliser la clé privée, pas .pub)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa
Le fichier fourni n'est pas une clé privée. Vérifiez :
.pub (clé publique)known_hosts-----BEGIN PRIVATE KEY----- ou -----BEGIN RSA PRIVATE KEY-----# INCORRECT
python3 dirtyfrag_scanner.py --user ghostgtr666--password 'pass' --subnet 192.168.1.0/24
# CORRECT
python3 dirtyfrag_scanner.py --user ghostgtr666 --password 'pass' --subnet 192.168.1.0/24
L'utilisateur n'a pas accès à sudo, ou le mot de passe n'a pas été fourni lorsque nécessaire :
# Option 1 : Utiliser root directement
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Option 2 : Fournir le mot de passe pour l'injection sudo automatique
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --patch
# Option 3 : Configurer NOPASSWD dans /etc/sudoers
echo 'admin ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
Augmentez --timeout :
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --timeout 30
Certaines distributions pré-compilent le noyau sans les modules esp4/esp6/rxrpc. Vérifiez manuellement :
# Sur l'hôte cible
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
Développé par Gagaltotal666 - GhostGTR666
GitHub : github.com/gagaltotal
Avertissement : Cet outil est destiné uniquement aux audits de sécurité légitimes et autorisés. L'utilisateur est responsable de l'utilisation de cet outil.