🇰🇷 한글 설명
Kyverno 정책 엔진의 권한 경계 우회 취약점으로, 인증된 사용자가 Kyverno의 admission controller 서비스 계정을 사용하여 Kubernetes API 요청을 수행할 수 있습니다.
💡 쉬운 설명
Kyverno 정책 엔진의 취약점으로 인해 인증된 사용자가 다른 네임스페이스의 리소스에 접근하여 데이터를 읽거나 쓰는 등의 공격이 가능합니다. Kyverno 버전 1.16.3 및 1.15.3 이전 버전에서 발생합니다.
🇺🇸 원문 (English)
Kyverno is a policy engine designed for cloud native platform engineering teams. Versions prior to 1.16.3 and 1.15.3 have a critical authorization boundary bypass in namespaced Kyverno Policy apiCall. The resolved `urlPath` is executed using the Kyverno admission controller ServiceAccount, with no enforcement that the request is limited to the policy’s namespace. As a result, any authenticated user with permission to create a namespaced Policy can cause Kyverno to perform Kubernetes API requests using Kyverno’s admission controller identity, targeting any API path allowed by that ServiceAccount’s RBAC. This breaks namespace isolation by enabling cross-namespace reads (for example, ConfigMaps and, where permitted, Secrets) and allows cluster-scoped or cross-namespace writes (for example, creating ClusterPolicies) by controlling the urlPath through context variable substitution. Versions 1.16.3 and 1.15.3 contain a patch for the vulnerability.
📍 영향받는 시스템
Kyverno 버전 1.16.3 및 1.15.3 이전 버전
⚔️ 공격 벡터
인증된 사용자가 Kyverno 정책을 생성하여 Kyverno admission controller 서비스 계정을 사용하여 Kubernetes API 요청을 수행
🛡️ 대응 방법
Kyverno 버전을 1.16.3 또는 1.15.3 이상으로 업그레이드합니다.
🔧 검증 코드
로컬 시스템에서 Kyverno 버전을 확인하여 취약점 여부를 점검합니다. Kyverno가 설치되어 있지 않으면 이 코드를 실행할 수 없습니다. Kyverno를 설치한 후에 이 코드를 실행하세요.
python -c "import subprocess; output = subprocess.check_output(['kyverno', 'version']).decode('utf-8'); if '1.16.3' in output or '1.15.3' in output: print('{"result": "양호", "reason": "Kyverno 버전이 1.16.3 또는 1.15.3 이상"}'); else: print('{"result": "취약", "reason": "Kyverno 버전이 1.16.3 또는 1.15.3 미만"}')"