🇰🇷 한글 설명
Envoy 프록시의 ext_authz 필터에서 :path 의사 헤더가 없는 CONNECT 요청을 처리할 때 발생하는 결함입니다. 인증 응답을 통해 쿼리 파라미터를 수정하는 설정이 활성화된 경우, 경로가 없는 요청이 들어오면 Null 포인터 역참조가 발생하여 프로세스가 충돌할 수 있습니다.
💡 쉬운 설명
특수한 방식의 연결 요청을 보낼 때 Envoy라는 프로그램이 경로 정보를 찾지 못해 갑자기 꺼져버리는 문제입니다. 공격자가 이를 이용해 서버를 강제로 중단시켜 서비스를 마비시킬 수 있습니다.
🇺🇸 원문 (English)
Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.36.10, 1.37.6, 1.38.4, and 1.39.1, Envoy's ext_authz filter assumes that a request contains a :path pseudoheader when applying query_parameters_to_set or query_parameters_to_remove from an authorization response. A path-less CONNECT request makes request_headers_->Path() return null, and Filter::onComplete dereferences that pointer while parsing the query string. An unauthenticated downstream client can crash the Envoy process when the filter and authorization response use query-parameter mutation. The relevant scope boundary is that the deployment must accept path-less CONNECT and configure ext_authz query-parameter mutation. This issue is fixed in versions 1.36.10, 1.37.6, 1.38.4, and 1.39.1.
📍 영향받는 시스템
Envoy versions prior to 1.36.10, 1.37.6, 1.38.4, and 1.39.1
⚔️ 공격 벡터
경로 정보(:path)가 없는 CONNECT 요청을 전송하여 인증 필터의 Null 포인터 역참조 유도
🛡️ 대응 방법
Envoy를 최신 보안 패치 버전(1.36.10, 1.37.6, 1.38.4, 1.39.1 이상)으로 업데이트
🔧 검증 코드
출력된 버전이 취약점이 해결된 버전(1.36.10, 1.37.6, 1.38.4, 1.39.1 이상)인지 확인
envoy --version 2>/dev/null || echo 'Envoy not found'