🇰🇷 한글 설명
Heimdall의 envoy gRPC decision API 모드에서 URL 쿼리 문자열의 잘못된 인코딩으로 인해 경로 기반 접근 제어 규칙을 우회할 수 있는 취약점입니다. Envoy가 URL을 분할하여 전달할 때 특수 문자가 자동으로 인코딩되면서, 특정 경로를 매칭해야 하는 규칙이 무효화되어 보안 정책이 적용되지 않을 수 있습니다. 이 문제는 v0.17.11 버전에서 수정되었습니다.
💡 쉬운 설명
웹사이트 주소에 특수 기호를 섞어 보내면 보안 검사기가 주소를 잘못 읽어서 차단해야 할 페이지를 통과시켜 버리는 문제입니다. 보안 설정이 '모두 허용'으로 되어 있는 경우에만 실제 침입으로 이어질 수 있습니다.
🇺🇸 원문 (English)
Heimdall is a cloud native Identity Aware Proxy and Access Control Decision service. When using Heimdall in envoy gRPC decision API mode with versions 0.7.0-alpha through 0.17.10, wrong encoding of the query URL string allows rules with non-wildcard path expressions to be bypassed. Envoy splits the requested URL into parts, and sends the parts individually to Heimdall. Although query and path are present in the API, the query field is documented to be always empty and the URL query is included in the path field. The implementation uses go's url library to reconstruct the url which automatically encodes special characters in the path. As a consequence, a parameter like /mypath?foo=bar to Path is escaped into /mypath%3Ffoo=bar. Subsequently, a rule matching /mypath no longer matches and is bypassed. The issue can only lead to unintended access if Heimdall is configured with an "allow all" default rule. Since v0.16.0, Heimdall enforces secure defaults and refuses to start with such a configuration unless this enforcement is explicitly disabled, e.g. via --insecure-skip-secure-default-rule-enforcement or the broader --insecure flag. This issue has been fixed in version 0.17.11.
📍 영향받는 시스템
Heimdall versions 0.7.0-alpha through 0.17.10 (envoy gRPC decision API mode)
⚔️ 공격 벡터
URL 경로에 특수 문자를 포함하여 인코딩 오류를 유도함으로써 정의된 접근 제어 규칙을 우회함
🛡️ 대응 방법
Heimdall을 v0.17.11 이상의 버전으로 업데이트하거나, 보안 기본값 강제 설정을 활성화함
🔧 검증 코드
출력된 버전이 0.17.11 미만인 경우 해당 취약점에 노출된 상태입니다.
heimdall --version 2>/dev/null | grep -E '0\.(0\.[0-9]+|7\.[0-9]+|1[0-7]\.[0-9]+)'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
💻 영향받는 소프트웨어
IBM Verify Identity Access