🇰🇷 한글 설명
External Secrets Operator 0.15.0~0.19.1 버전에서 PushSecret 컨트롤러의 List() 호출이 namespace 선택자를 적용하지 않아, 공격자가 레이블 선택자로 클러스터 전체 secrets을 열람할 수 있습니다. PushSecret 생성/수정 권한이 있으면 임의 namespace의 민감 정보를 탈취 가능하며, 0.19.2에서 패치되었습니다.
💡 쉬운 설명
쿠버네티스의 External Secrets Operator 도구에서 비밀 정보 보호가 제대로 되지 않는 문제입니다. 권한 있는 공격자가 클러스터의 모든 비밀번호와 토큰을 훔칠 수 있습니다.
🇺🇸 원문 (English)
External Secrets Operator is a Kubernetes operator that integrates external secret management systems. From version 0.15.0 to before 0.19.2, a vulnerability was discovered where the List() calls for Kubernetes Secret and SecretStore resources performed by the PushSecret controller did not apply a namespace selector. This flaw allowed an attacker to use label selectors to list and read secrets/secret-stores across the cluster, bypassing intended namespace restrictions. An attacker with the ability to create or update PushSecret resources and control SecretStore configurations could exploit this vulnerability to exfiltrate sensitive data from arbitrary namespaces. This could lead to full disclosure of Kubernetes secrets, including credentials, tokens, and other sensitive information stored in the cluster. This vulnerability has been patched in version 0.19.2. A workaround for this issue includes auditing and restricting RBAC permissions so that only trusted service accounts can create or update PushSecret and SecretStore resources.
📍 영향받는 시스템
External Secrets Operator 버전 0.15.0 ~ 0.19.1 (0.19.2에서 패치됨)
⚔️ 공격 벡터
PushSecret/SecretStore 생성/수정 권한이 있는 공격자가 레이블 선택자를 활용해 namespace 제한을 우회하고 데이터 탈취
🛡️ 대응 방법
0.19.2 이상으로 즉시 업그레이드하거나, RBAC을 제한하여 신뢰할 수 있는 서비스 계정만 PushSecret/SecretStore 관리 가능하도록 설정
🔧 검증 코드
출력된 이미지 태그에서 버전이 v0.19.2 이상이면 패치됨, 0.19.1 이하면 취약점 존재
kubectl get deployment -n external-secrets-system external-secrets -o jsonpath='{.spec.template.spec.containers[0].image}' 2>/dev/null