🔍 CVE-2026-69246

7.2
CVSS Score
HIGH
2026-08-03
2026-09-08 20:41
✅ 완료

🇰🇷 한글 설명

Guzzle PHP HTTP 클라이언트에서 URI 인코딩 방식의 차이로 인해 발생하는 보안 취약점입니다. 공격자가 조작된 URI를 제공할 경우, 애플리케이션의 검증을 우회하여 로컬 호스트나 허용되지 않은 내부 네트워크에 접근할 수 있습니다. 이는 libcurl의 디코딩 방식과 Guzzle의 호스트 검증 방식 간의 불일치를 악용합니다.

💡 쉬운 설명

웹사이트가 주소를 확인할 때는 안전하다고 판단하지만, 실제 데이터를 주고받는 도구는 주소를 다르게 해석하여 금지된 구역에 접속하는 문제입니다. 이를 통해 해커가 내부 시스템의 정보를 몰래 빼낼 수 있습니다.

🇺🇸 원문 (English)

Guzzle is an extensible PHP HTTP client. Prior to 7.15.2 and 8.0.1, Guzzle gives a transport the request URI as text and supplies the Host header separately. The cURL handlers set CURLOPT_URL to the URI exactly as written and push that Host into CURLOPT_HTTPHEADER; StreamHandler does the same through fopen(). libcurl then parses the authority itself, percent-decoding it and, on an IDN-capable build, applying IDNA mapping, and uses the result to resolve, connect, name the TLS peer and address a proxy CONNECT, while the supplied Host suppresses the aligned one libcurl would have generated. For a URI host written as 127.0.0.%31, filter_var() rejects the host as an IP literal, yet libcurl decodes it to 127.0.0.1 and reaches loopback with no DNS lookup while the server receives Host: 127.0.0.%31. An attacker who influences a fetched URI can therefore reach a host the application's checks excluded and read whatever the host exposes of the response. The same divergence moves Guzzle's own decisions onto a spelling the transport does not use: no_proxy selects proxy routing from the literal host, and RedirectMiddleware decides from it whether to strip Authorization and Cookie. Exploitation requires the application to build a request URI from untrusted input and to make a host decision before handing it to Guzzle. This issue is fixed in versions 7.15.2 and 8.0.1.

📍 영향받는 시스템

Guzzle versions prior to 7.15.2 and 8.0.1

⚔️ 공격 벡터

신뢰할 수 없는 입력값으로 조작된 URI(예: 127.0.0.%31)를 전달하여 검증 로직을 우회하고 내부 호스트에 접근

🛡️ 대응 방법

Guzzle를 7.15.2 또는 8.0.1 이상의 최신 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 버전이 7.15.2 미만 또는 8.0.1 미만인지 확인하십시오.

Shell / Script
composer show guzzlehttp/guzzle | grep 'versions'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N

💻 영향받는 소프트웨어

IBM WebSphere Application Server