🇰🇷 한글 설명
Kubernetes의 NodeRestriction admission controller에서 노드 사용자가 자신을 클러스터 범위 리소스의 OwnerReference로 패치하여 해당 노드 객체를 삭제할 수 있는 취약점입니다. OwnerReference 리소스가 존재하지 않거나 나중에 삭제되면 가비지 컬렉션을 통해 노드 객체가 자동으로 삭제됩니다.
💡 쉬운 설명
Kubernetes 클러스터에서 노드 사용자가 특수한 방법으로 자신이 속한 노드를 삭제 가능하게 만드는 보안 결함입니다. 이로 인해 클러스터 운영이 중단될 수 있습니다.
🇺🇸 원문 (English)
A vulnerability exists in the NodeRestriction admission controller in Kubernetes clusters where node users can delete their corresponding node object by patching themselves with an OwnerReference to a cluster-scoped resource. If the OwnerReference resource does not exist or is subsequently deleted, the given node object will be deleted via garbage collection.
📍 영향받는 시스템
NodeRestriction admission controller를 사용하는 모든 Kubernetes 1.16 이상 버전
⚔️ 공격 벡터
인증된 노드 사용자가 OwnerReference를 이용한 패치 요청으로 노드 객체의 소유권을 변경하여 삭제 유도
🛡️ 대응 방법
Kubernetes를 최신 보안 패치 버전으로 업데이트하거나 RBAC 정책에서 노드의 patch 권한 제한
🔧 검증 코드
OwnerReferences가 설정된 노드가 출력되면 취약한 상태이며, 해당 노드의 참조 대상 리소스 존재 여부를 확인해야 합니다.
kubectl get nodes -o json | jq '.items[] | select(.metadata.ownerReferences != null) | .metadata.name'