🇰🇷 한글 설명
Envoy 프록시가 HTTP/3 요청을 HTTP/1로 변환하는 과정에서 Content-Length와 실제 데이터 간의 불일치를 처리하지 못하는 취약점입니다. 이로 인해 후속 요청의 데이터가 이전 요청의 본문으로 오인되어 HTTP 요청 비동기화(Desync) 및 경로 우회 공격이 발생할 수 있습니다.
💡 쉬운 설명
인터넷 통신 규칙을 처리하는 과정에서 데이터의 시작과 끝을 잘못 계산하여 발생하는 오류입니다. 공격자가 이 허점을 이용하면 보안 검사를 피해 원래 접근할 수 없는 페이지에 몰래 접속할 수 있습니다.
🇺🇸 원문 (English)
Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1, Envoy can translate a downstream HTTP/3 request that is complete at the transport layer (HEADERS with FIN / headers-only close) but still carries a nonzero Content-Length into a complete upstream HTTP/1 request with unresolved body debt. In an HTTP/1 upstream deployment where the origin replies before reading the declared body and keeps the connection reusable, the beginning of the next Envoy-generated upstream request can be consumed as the first request's body. The remaining bytes are then parsed by the origin as a new HTTP/1 request. This was reproduced as a route-bypass/desync: direct /pwn was denied by Envoy, but the second downstream H3 stream received the response for backend-parsed GET /pwn HTTP/1.1. This vulnerability is fixed in 1.35.11, 1.36.7, 1.37.3, and 1.38.1.
📍 영향받는 시스템
Envoy versions prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1
⚔️ 공격 벡터
HTTP/3 요청의 Content-Length를 조작하여 HTTP/1 업스트림 연결에서 요청 비동기화(Request Desync) 유도
🛡️ 대응 방법
Envoy를 최신 보안 패치 버전(1.35.11, 1.36.7, 1.37.3, 1.38.1 이상)으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 패치된 버전 번호가 출력되면 안전하며, 출력되지 않으면 취약할 수 있습니다.
envoy --version | grep -E '1.35.11|1.36.7|1.37.3|1.38.1'