🇰🇷 한글 설명
Http4s의 Ember 엔진에서 Transfer-Encoding 헤더를 처리할 때 대소문자 구분 및 문자 인코딩 방식의 오류가 발견되었습니다. 이로 인해 프록시 서버와 백엔드 서버 간의 요청 해석 차이가 발생하여 HTTP 요청 스머글링(Request Smuggling) 공격이 가능해집니다. 공격자는 이를 통해 권한 우회, 사용자 세션 탈취, 캐시 포이즈닝 등의 피해를 입힐 수 있습니다.
💡 쉬운 설명
웹 서버가 데이터의 끝을 확인하는 규칙을 잘못 해석하여, 공격자가 몰래 숨겨둔 명령어를 서버가 실행하게 만드는 보안 결함입니다. 이를 통해 다른 사용자의 정보를 훔치거나 웹사이트의 정상적인 동작을 방해할 수 있습니다.
🇺🇸 원문 (English)
Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, Ember’s HeaderP.parse uses a case-sensitive substring test for the Transfer-Encoding value and decodes header bytes with the platform default charset. Values such as Chunked are not recognized, values such as notchunked are incorrectly accepted, and Unicode case folding can turn a Kelvin-sign byte sequence into a match when UTF-8 is used. Intermediaries that apply RFC-compliant token and charset rules can therefore disagree with Ember’s Content-Length or zero-length framing, enabling TE.CL or TE.0 request smuggling, access-control bypass, cross-user request hijacking, and cache poisoning on the server path. Response smuggling through an ember-client gateway requires a malicious or compromised upstream. This issue is fixed in versions 0.23.35 and 1.0.0-M47.
📍 영향받는 시스템
Http4s versions prior to 0.23.35 and 1.0.0-M47
⚔️ 공격 벡터
조작된 Transfer-Encoding 헤더를 사용하여 프록시와 서버 간의 요청 해석 불일치를 유도하는 HTTP Request Smuggling
🛡️ 대응 방법
Http4s를 0.23.35 또는 1.0.0-M47 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
사용 중인 프로젝트의 의존성 목록에서 http4s-ember 버전을 확인하여 0.23.35 또는 1.0.0-M47 미만인지 확인합니다.
sbt dependencyBrowseGraph | grep -E 'http4s-ember' || echo 'Check build.sbt for http4s version'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N
💻 영향받는 소프트웨어
Spring Cloud Gateway Server