🇰🇷 한글 설명
Kyverno 1.17.0 이상 1.19.2 미만 버전에는 네임스페이스 범위 테넌트가 NamespacedMutatingPolicy의 targetMatchConstraints.expression CEL 출력을 조작하여 다른 네임스페이스의 리소스를 수정할 수 있는 권한 상승 취약점이 존재합니다. 네임스페이스 검사가 누락되어 공격자는 다른 테넌트의 RoleBinding 같은 리소스를 직접 지정할 수 있으며, 클러스터 전역 백그라운드 컨트롤러가 이를 변경하여 공격자 주체를 추가하거나 Role, NetworkPolicy, ConfigMap을 변경하게 됩니다.
💡 쉬운 설명
정해진 범위 안에서만 작업해야 하는 일반 사용자가 Kyverno 정책을 악용해 다른 팀의 설정까지 바꿀 수 있습니다. 이를 통해 공격자가 클러스터 내 더 높은 권한을 얻을 수 있습니다.
🇺🇸 원문 (English)
Kyverno from 1.17.0 before 1.19.2 contains a privilege escalation vulnerability that allows namespace-scoped tenants to modify resources in other namespaces through NamespacedMutatingPolicy targetMatchConstraints.expression CEL output lacking namespace checks. Attackers can emit a literal target such as another tenant's RoleBinding, which the cluster-wide background controller then mutates to add attacker subjects or alter Roles, NetworkPolicies, and ConfigMaps.
📍 영향받는 시스템
Kyverno 1.17.0 이상 1.19.2 미만을 사용하는 Kubernetes 클러스터
⚔️ 공격 벡터
네임스페이스 범위 테넌트가 NamespacedMutatingPolicy의 CEL 표현식을 조작해 다른 네임스페이스의 RoleBinding 등 리소스를 대상으로 지정하여 권한을 상승시킴
🛡️ 대응 방법
Kyverno를 1.19.2 이상으로 업그레이드하고, 업그레이드 전까지 테넌트의 NamespacedMutatingPolicy 생성 권한을 제한합니다.
🔧 검증 코드
출력된 이미지 태그가 1.19.2 이상이면 취약점이 패치된 것이고, 1.17.0~1.19.1 범위이면 즉시 업그레이드가 필요합니다.
kubectl get deployment kyverno -n kyverno -o jsonpath='{.spec.template.spec.containers[0].image}' 2>/dev/null