🔍 CVE-2026-34984

6.5
CVSS Score
MEDIUM
2026-04-14
2026-06-17 10:39
✅ 완료

🇰🇷 한글 설명

External Secrets Operator 2.2.0 이하의 v2 템플릿 엔진에서 getHostByName 함수가 사용자 제어 템플릿에 노출되어 DNS 익스필트레이션 공격을 가능하게 합니다. 공격자가 templated ExternalSecret을 생성/수정할 수 있으면 컨트롤러의 DNS 조회 기능으로 시크릿 정보를 DNS 쿼리를 통해 유출할 수 있습니다.

💡 쉬운 설명

Kubernetes의 External Secrets Operator가 사용자 템플릿에서 DNS 조회 기능을 실행할 수 있게 해줍니다. 악의적인 사용자가 이를 이용해 DNS 쿼리로 시스템의 암호 정보를 몰래 빼낼 수 있습니다.

🇺🇸 원문 (English)

External Secrets Operator reads information from a third-party service and automatically injects the values as Kubernetes Secrets. Versions 2.2.0 and below contain a vulnerability in runtime/template/v2/template.go where the v2 template engine removes env and expandenv from Sprig's TxtFuncMap() but leaves the getHostByName function accessible to user-controlled templates. Since ESO executes templates within the controller process, an attacker who can create or update templated ExternalSecret resources can invoke controller-side DNS lookups using secret-derived values. This creates a DNS exfiltration primitive, allowing fetched secret material to be leaked via DNS queries without requiring direct outbound network access from the attacker's workload. The impact is a confidentiality issue, particularly in environments where untrusted or lower-trust users can author templated ExternalSecret resources and the controller has DNS resolution capability. This issue has been fixed in version 2.3.0.

📍 영향받는 시스템

External Secrets Operator v2.2.0 이하

⚔️ 공격 벡터

ExternalSecret 리소스에 악의적인 템플릿 주입으로 getHostByName 함수 호출 및 DNS 익스필트레이션 수행

🛡️ 대응 방법

External Secrets Operator를 v2.3.0 이상으로 업그레이드

🔧 검증 코드

Helm으로 설치된 버전을 확인하거나 디플로이먼트 이미지 태그에서 현재 ESO 버전 확인

Shell / Script
helm list -n external-secrets-system | grep external-secrets || kubectl get deployment external-secrets-webhook-service -n external-secrets-system -o jsonpath='{.spec.template.spec.containers[0].image}' 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

💻 영향받는 소프트웨어

Kubernetes