
Outil complet de détection de vulnérabilités pour les instances d’automatisation de workflows n8n. Détecte la vulnérabilité critique CVE-2026-21858 (CVSS 10.0) sans effectuer aucune exploitation.
Scanner de sécurité éthique pour CVE-2026-21858 (Vulnérabilité Ni8mare)
« Le savoir est un pouvoir, mais seulement s'il est partagé de manière responsable. »
Outil complet de détection de vulnérabilités pour les instances d'automatisation de workflows n8n. Détecte la vulnérabilité critique CVE-2026-21858 (CVSS 10.0) sans effectuer aucune exploitation.
# Naviguer vers le répertoire des scripts
cd ni8mare-scanner/scripts
# Installer les dépendances
pip install -r requirements.txt
# Vérifier si une version est vulnérable
python n8n_scanner.py version-check 1.120.0
# Scanner une instance en direct
python n8n_scanner.py scan https://n8n.example.com:5678
# Obtenir les informations sur la CVE
python n8n_scanner.py info
Sévérité : CVSS 10.0 (Critique)
Corrigé dans : n8n v1.121.0
Découvert par : Dor Attias (Cyera Research Labs)
Outil maintenu par : CropNet sur GitHub, par l'équipe de recherche de l'organisation Schema.cx
Vulnérabilité critique permettant à des attaquants non authentifiés de lire des fichiers arbitraires via une confusion de type de contenu.
Ce scanner effectue une détection non invasive uniquement - il n'exploite jamais la vulnérabilité.
# Vérifier une version vulnérable
python n8n_scanner.py version-check 1.120.0
# Sortie : Statut 🔴 VULNÉRABLE (code de sortie 2)
# Vérifier une version sûre
python n8n_scanner.py version-check 1.121.0
# Sortie : Statut 🟢 Non vulnérable (code de sortie 0)
# Scan de base
python n8n_scanner.py scan https://n8n.example.com:5678
# Scan approfondi avec sortie JSON
python n8n_scanner.py scan https://n8n.example.com:5678 \
--intensity deep \
--format json \
--output report.json
# Ignorer l'invite d'autorisation (pour les scans pré-autorisés)
python n8n_scanner.py scan https://n8n.example.com:5678 --no-confirm
# Créer un fichier de cibles
cat > targets.txt << EOF
https://n8n1.example.com:5678
https://n8n2.example.com:5678
https://n8n3.example.com:5678
EOF
# Scanner toutes les cibles
python n8n_scanner.py batch targets.txt --output results.csv --format csv
# Générer une config YAML vers la sortie standard
python n8n_scanner.py generate-config --format yaml
# Générer une config JSON vers un fichier
python n8n_scanner.py generate-config --format json --output config.json
# Utiliser un fichier de config pour le scan
python n8n_scanner.py scan https://n8n.example.com:5678 --config config.json
| Commande | Description | Exemple |
|---|---|---|
scan | Scanner une seule cible | python n8n_scanner.py scan <target> |
batch | Scanner plusieurs cibles | python n8n_scanner.py batch targets.txt |
version-check | Vérifier la vulnérabilité d'une version | python n8n_scanner.py version-check 1.120.0 |
generate-config | Générer un modèle de configuration | python n8n_scanner.py generate-config --format yaml |
info | Afficher les informations sur la CVE | python n8n_scanner.py info |
connectivity | Tester la connectivité | python n8n_scanner.py connectivity <target> |
scanpython n8n_scanner.py scan <target> [OPTIONS]
Options :
--intensity, -i - Intensité du scan : light, medium, deep (défaut : medium)--output, -o - Chemin du fichier de sortie--format, -f - Format de sortie : json, csv, html, text, markdown--timeout, -t - Délai d'expiration des requêtes en secondes (défaut : 30)--delay, -d - Délai entre les requêtes (défaut : 2.0)--no-confirm - Ignorer la confirmation d'autorisation--config, -c - Chemin du fichier de configuration--verbose, -V - Sortie détaillée--json-logs - Format de journal JSON (pour l'automatisation)version-checkpython n8n_scanner.py version-check <version_or_url>
Codes de sortie :
0 - La version est sûre (corrigée)1 - Une erreur s'est produite2 - La version est vulnérableExemples :
# Vérifier une chaîne de version
python n8n_scanner.py version-check 1.120.0
# Vérifier la version d'une instance en direct
python n8n_scanner.py version-check https://n8n.example.com:5678
# config.yml
scan:
intensity: medium
timeout: 30
rate_limit:
delay: 2.0
max_requests: 100
targets:
- https://n8n.example.com:5678
require_confirmation: true
output:
format: json
directory: ./reports
Quatre profils préconfigurés disponibles :
Générer avec : python n8n_scanner.py generate-config --profile thorough
{
"target": "https://n8n.example.com:5678",
"version": "1.120.0",
"vulnerable": true,
"cve": "CVE-2026-21858",
"severity": "CRITICAL"
}
Target,Version,Vulnerable,CVE,Severity
https://n8n.example.com:5678,1.120.0,true,CVE-2026-21858,CRITICAL
Rapports HTML professionnels avec styles et graphiques.
Sortie lisible par l'humain avec codes couleur et indicateurs de sévérité.
Format adapté à la documentation pour wikis et rapports.
# Construire avec Docker Compose
docker-compose build
# Exécuter des commandes
docker-compose run --rm scanner version-check 1.120.0
docker-compose run --rm scanner scan https://n8n.example.com:5678 --no-confirm
# Scan par lots avec fichier monté
docker-compose run --rm \
-v $(pwd)/targets.txt:/app/targets.txt \
scanner batch /app/targets.txt
ni8mare-scanner/
├── scripts/
│ ├── n8n_scanner.py # CLI principale
│ ├── modules/ # Modules principaux
│ │ ├── scanner.py # Logique de scan
│ │ ├── detector.py # Détection de vulnérabilité
│ │ ├── reporter.py # Génération de rapports
│ │ ├── config.py # Configuration
│ │ └── utils.py # Utilitaires
│ ├── tests/ # Suite de tests
│ └── build.py # Automatisation de la construction
├── docs/ # Documentation
└── docker/ # Configurations Docker
# Test de fonctionnalité rapide (recommandé)
cd scripts
python quick_test.py
# Suite de tests complète
python build.py test
# Tester un module spécifique
python -m pytest tests/test_config.py -v
Résultats du test rapide :
[Test] Détection de vulnérabilité de version [OK]
[Test] Chargement de la configuration [OK]
[Test] Création du scanner [OK]
[Test] Création du détecteur [OK]
[Test] Création du rapporteur [OK]
[Test] Fonctions utilitaires [OK]
Résultats : 6 réussis, 0 échec
# Installer les dépendances
python build.py install
# Exécuter tous les tests
python build.py test
# Exécuter les linters
python build.py lint
# Formater le code
python build.py format
# Construire la distribution
python build.py build
# Nettoyer les artefacts
python build.py clean
# Pipeline de construction complet
python build.py all
Le scanner exige une autorisation explicite :
⚠️ AUTORISATION REQUISE
Vous êtes sur le point de scanner : https://n8n.example.com:5678
Êtes-vous autorisé à tester cette cible ? [y/N] :
Requis :
Interdit :
Si vous découvrez des instances vulnérables :
CVE-2026-21858 découverte par :
Ce scanner a été développé comme un outil de sécurité éthique pour aider les organisations à identifier et remédier à la vulnérabilité Ni8mare. Il effectue uniquement la détection et n'exploite jamais les vulnérabilités.
Licence MIT - Voir le fichier LICENSE pour plus de détails.
Composants tiers :
enhancementQ : Cet outil va-t-il exploiter la vulnérabilité ?
R : Non. Détection uniquement, jamais d'exploitation.
Q : Puis-je scanner sans autorisation ?
R : Non. Obtenez toujours une autorisation écrite au préalable.
Q : Quelles versions sont vulnérables ?
R : Toutes les versions de n8n inférieures à 1.121.0 sont vulnérables.
Q : Quelle est la précision de la détection ?
R : Très haute précision avec de faibles taux de faux positifs.
Q : Puis-je l'utiliser dans des pipelines CI/CD ?
R : Oui. Utilisez --no-confirm et --json-logs pour l'automatisation.
Q : Fonctionne-t-il sous Windows ?
R : Oui. Tous les problèmes de compatibilité Unicode ont été résolus.
cd ni8mare-scanner/scripts
pip install -r requirements.txt
# Vérification de version
python n8n_scanner.py version-check 1.120.0
# Scan d'instance
python n8n_scanner.py scan https://n8n.example.com:5678
# Scan par lots
python n8n_scanner.py batch targets.txt
# Générer une config
python n8n_scanner.py generate-config --format yaml > config.yml
# Afficher l'aide
python n8n_scanner.py --help
python n8n_scanner.py scan --help
0 = Sûr/Succès1 = Erreur2 = VulnérableFait avec ❤️ pour la communauté de la sécurité
Cet outil est fourni tel quel pour les tests de sécurité éthiques uniquement. Les auteurs ne sont pas responsables des mauvais usages ou des dommages causés par cet outil.