🇰🇷 한글 설명
Envoy의 HTTP/2 코덱에서 상위 서버로부터 RST_STREAM 프레임 직후 GOAWAY 프레임을 수신할 경우 헤더 맵과 장부 구조가 유출될 수 있습니다. nghttp2 라이브러리에서 GOAWAY 수신 시 대기 중인 요청의 정리 과정 중 메모리 해제 단계가 누락되어 메모리 누수가 발생합니다. 이로 인해 메모리 고갈을 통한 서비스 거부(DoS) 공격이 가능합니다.
💡 쉬운 설명
특정한 네트워크 신호를 연속으로 보내면 프로그램이 사용한 메모리를 제대로 돌려주지 않고 계속 쌓아두게 됩니다. 이 현상이 반복되면 컴퓨터의 메모리가 가득 차서 서비스가 멈출 수 있습니다.
🇺🇸 원문 (English)
Envoy is a cloud-native high-performance edge/middle/service proxy. Envoy’s HTTP/2 codec may leak a header map and bookkeeping structures upon receiving `RST_STREAM` immediately followed by the `GOAWAY` frames from an upstream server. In nghttp2, cleanup of pending requests due to receipt of the `GOAWAY` frame skips de-allocation of the bookkeeping structure and pending compressed header. The error return [code path] is taken if connection is already marked for not sending more requests due to `GOAWAY` frame. The clean-up code is right after the return statement, causing memory leak. Denial of service through memory exhaustion. This vulnerability was patched in versions(s) 1.26.3, 1.25.8, 1.24.9, 1.23.11.
📍 영향받는 시스템
Envoy versions prior to 1.26.3, 1.25.8, 1.24.9, 1.23.11
⚔️ 공격 벡터
상위 서버로부터 RST_STREAM 프레임 직후 GOAWAY 프레임을 전송하여 메모리 누수를 유도하는 방식
🛡️ 대응 방법
Envoy를 패치된 버전(1.26.3, 1.25.8, 1.24.9, 1.23.11 이상)으로 업데이트하십시오.
🔧 검증 코드
출력된 Envoy의 버전을 확인하여 취약점이 해결된 패치 버전 이상인지 대조합니다.
envoy --version 2>/dev/null || dpkg -l | grep envoy