🇰🇷 한글 설명
Kyverno 1.18.0부터 1.18.2 버전 사이의 NamespacedMutatingPolicy CEL 컴파일러에서 발생하는 취약점입니다. 특정 네임스페이스 권한을 가진 사용자가 정책을 통해 다른 네임스페이스에 임의의 리소스를 생성할 수 있어 권한 상승이 가능합니다.
💡 쉬운 설명
특정 구역의 규칙을 만드는 사용자가 권한을 악용해 다른 구역에 몰래 물건을 만들거나 설정을 바꿀 수 있는 문제입니다. 이를 통해 관리자 권한을 뺏거나 시스템 전체를 위험하게 만들 수 있습니다.
🇺🇸 원문 (English)
Kyverno is a policy engine designed for cloud native platform engineering teams. From 1.18.0 until 1.18.2, the NamespacedMutatingPolicy CEL compiler exposes the generator library to matchConditions, allowing a namespace-scoped policy to invoke generator.apply(namespace, resources) with an arbitrary target namespace. The validation in pkg/cel/policies/mpol/validate.go checks that the policy compiles but does not enforce namespace scope, and GenerateResources in pkg/cel/libs/context.go does not reject the cross-namespace target. A user who can create NamespacedMutatingPolicy objects in one namespace can cause the admission controller, operating with cluster-wide privileges, to create ConfigMaps, NetworkPolicies, Secrets, RoleBindings, and other resources in another namespace, enabling unauthorized modification and potential privilege escalation. This issue is fixed in version 1.18.2.
📍 영향받는 시스템
Kyverno versions 1.18.0 to 1.18.2
⚔️ 공격 벡터
NamespacedMutatingPolicy의 CEL 컴파일러를 이용해 타겟 네임스페이스를 임의로 지정하여 리소스 생성
🛡️ 대응 방법
Kyverno를 1.18.2 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 Kyverno 이미지 태그 버전이 1.18.2 미만인지 확인하십시오.
helm list -A | grep kyverno | awk '{print $2}' && kubectl get pods -A -l app.kubernetes.io/name=kyverno -o jsonpath='{.items[*].spec.containers[*].image}'