
Mécanisme de détection haute fidélité pour node2shell (CVE-2026-111497)
Un outil en ligne de commande pour détecter CVE-2026-111497 dans les applications HTTP Node.js.
Le scanner envoie quatre contrôles d'un octet pour apprendre comment le point de terminaison gère un JSON Brotli valide, un Brotli malformé, des requêtes sans type de contenu JSON, et des encodages non pris en charge. Il diffuse ensuite une sonde Brotli de 23 068 764 octets et répète le contrôle valide.
Une cible n'est signalée comme vulnérable que lorsque la sonde complète atteint la classe de réponse valide de la route, que la classe de réponse malformée est distincte, et que le contrôle final confirme que le point de terminaison est resté stable. Cela correspond à la logique de détection interne du postmodule d'Assetnote et n'exécute aucune commande.
Le chemin de l'URL est préservé et vaut / par défaut. Les redirections ne sont pas suivies.
Chaque point de terminaison testé reçoit cinq requêtes d'un octet et une sonde de 23 068 764 octets. La sonde utilise Expect: 100-continue, de sorte qu'un proxy peut rejeter sa taille annoncée avant que le corps ne soit téléversé.
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Per-request timeout in seconds (default: 60)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable TLS certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show verdict reasons and response snippets
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
Les résultats sont affichés dans le terminal. Avec -o, les hôtes vulnérables sont enregistrés au format JSON avec le mode de comparaison et les preuves de requête/réponse expurgées. Utilisez --all-results pour enregistrer chaque verdict.
Développé par l'Assetnote Security Research Team à l'aide d'une logique de détection développée pour Searchlight's Exposure Platform.