🇰🇷 한글 설명
Envoy 프록시의 DefaultCertValidator::verifySubjectAltName 함수에서 구조적 결함이 발견되었습니다. 공격자가 NUL 바이트가 포함된 dNSName SAN을 가진 인증서를 제공할 경우, .c_str() 호출 시 문자열이 조기에 절단되어 잘못된 인증 검증이 수행될 수 있습니다.
💡 쉬운 설명
인증서 이름에 특수 문자(NUL 바이트)를 섞어 넣으면, 보안 검사 과정에서 이름이 중간에 잘린 채로 확인되는 취약점입니다. 이를 통해 공격자는 실제로는 일치하지 않는 가짜 인증서를 통과시켜 시스템에 접근할 수 있습니다.
🇺🇸 원문 (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, a structural flaw was identified in DefaultCertValidator::verifySubjectAltName where the extracted DNS SAN string is cast to a C-style string using .c_str() before being passed to the Utility::dnsNameMatch() algorithm. If the attacker serves a certificate with a dNSName SAN containing an embedded NUL byte, the helper Utility::generalNameAsString captures the complete string including the NUL. However, when .c_str() evaluates it, implicit conversion to absl::string_view inside dnsNameMatch relies on strlen(), prematurely truncating the evaluation context. Envoy evaluates trucated string against the exact required config_san match and returns true, thereby successfully validating the string with the Nul byte for an upstream routing. 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
⚔️ 공격 벡터
NUL 바이트가 포함된 dNSName SAN을 가진 악성 인증서를 서버에 제공하여 인증 검증 우회
🛡️ 대응 방법
Envoy를 최신 패치 버전(1.35.11, 1.36.7, 1.37.3, 1.38.1 이상)으로 업데이트
🔧 검증 코드
명령어 결과에 패치된 버전 번호가 나타나면 취약점이 해결된 상태입니다.
envoy --version | grep -E 'v(1.35.11|1.36.7|1.37.3|1.38.1)'