🇰🇷 한글 설명
Envoy의 HTTP OAuth2 필터에서 비동기 토큰 교환 프로세스가 이미 종료된 다운스트림 스트림에 남아 있어 발생하는 메모리 안전성 문제입니다. 이로 인해 Use-after-free 또는 잘못된 가상 함수 포인터 참조가 발생하여 워커 프로세스가 충돌하거나 정의되지 않은 동작을 유발할 수 있습니다.
💡 쉬운 설명
인증 과정 중에 연결이 끊겨도 프로그램이 종료된 데이터를 계속 사용하려고 시도하여 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 이로 인해 서비스가 중단되는 서비스 거부(DoS) 상태가 발생할 수 있습니다.
🇺🇸 원문 (English)
Envoy is an open source edge and service proxy designed for cloud-native applications. From 1.37.0 until 1.37.5 and 1.38.3, the HTTP OAuth2 filter (envoy.filters.http.oauth2) can leave an in-flight async token exchange attached to a downstream stream that has already been torn down. A late AsyncClient completion can still invoke OAuth2Filter methods that use StreamDecoderFilterCallbacks after that object’s lifetime has ended, causing undefined behavior, worker crashes (availability loss), and use-after-free / invalid-vptr failures under AddressSanitizer. This is a memory-safety / lifetime issue in the data plane, not a trivial config bug. Remote code execution is not claimed here; the primary demonstrated impact is DoS via crash and UB; any further impact would be deployment- and allocator-dependent. This vulnerability is fixed in 1.37.5 and 1.38.3.
📍 영향받는 시스템
Envoy 1.37.0 ~ 1.37.5 및 1.38.3 버전
⚔️ 공격 벡터
비동기 토큰 교환이 진행 중인 상태에서 연결을 의도적으로 끊어 메모리 오류를 유발하는 방식
🛡️ 대응 방법
Envoy를 최신 패치 버전인 1.37.5 또는 1.38.3 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 취약한 버전 범위가 나타나면 업데이트가 필요한 상태입니다.
envoy --version 2>/dev/null | grep -E 'v(1\.37\.[0-5]|1\.38\.3)'