🔍 CVE-2026-115700

6.9
CVSS Score
MEDIUM
2026-10-26
2026-11-02 21:17
✅ 완료

🇰🇷 한글 설명

benoitc hackney의 hackney_url에서 해석 충돌(Interpretation Conflict) 취약점이 발견되었습니다. 퍼센트 인코딩된 대괄호 IPv6 리터럴(예: %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D)이나 끝에 점이 붙은 IP 리터럴(예: 127.0.0.1.)은 호출자의 허용 목록 검사에서는 IP 주소로 인식되지 않지만, hackney는 실제로 해당 주소에 연결하여 SSRF(서버 측 요청 위조)가 발생할 수 있습니다. 리다이렉트 Location 대상에도 동일하게 적용됩니다.

💡 쉬운 설명

hackney 라이브러리의 URL 검사가 특정 형태의 IP 주소 표기를 걸러내지 못합니다. 공격자는 이를 이용해 서버가 내부 주소에 요청을 보내도록 조작할 수 있습니다.

🇺🇸 원문 (English)

Interpretation Conflict vulnerability in hackney_url in benoitc hackney allows Server Side Request Forgery via a percent-encoded bracketed IPv6 literal or an IP literal with a trailing dot. A host such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D (decoding to [::ffff:127.0.0.1]) or 127.0.0.1. is not an IP address to a caller's allowlist built on uri_string:parse/1 and inet:parse_address/1, while hackney connects to the address it denotes. The same applies to a Location target when redirects are followed. The IP-literal gate that hackney_url:normalize/2 applies to a percent-decoded host, added to close the percent-encoded IP bypass of CVE-2026-47076, passes the decoded value to inet_parse:address/1 as is. The connect path in hackney_happy:parse_address/1 drops a surrounding bracket pair, and the resolver ignores a trailing dot, so both forms pass the gate and still reach the literal address. Domain names with a trailing dot and unencoded IPv6 literals are not affected. This issue affects hackney: from 4.0.1 before 4.9.0.

📍 영향받는 시스템

hackney 4.0.1 이상 4.9.0 미만 (Erlang/Elixir 기반 애플리케이션)

⚔️ 공격 벡터

퍼센트 인코딩된 대괄호 IPv6 주소나 끝에 점이 붙은 IP 주소를 URL 호스트 또는 리다이렉트 Location으로 전달하여 허용 목록을 우회

🛡️ 대응 방법

hackney를 4.9.0 이상으로 업그레이드하고, 외부 입력 URL에 대해 해석 후 최종 연결 주소를 기준으로 내부 주소 대역을 차단

🔧 검증 코드

출력된 버전이 4.9.0 미만(4.0.1~4.8.x)이면 취약하며, 4.9.0 이상이면 패치된 버전입니다. 출력이 없으면 프로젝트에서 hackney를 찾지 못한 것이므로 의존성 파일을 직접 확인하세요.

Shell / Script
grep -rE '"?hackney"?' rebar.lock mix.lock 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1

📊 CVSS Vector String

CVSS Vector
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N