🇰🇷 한글 설명
Kanister 데이터 보호 도구의 기본 오퍼레이터가 과도한 권한의 edit ClusterRole에 바인딩되어 있어, 워커 노드에 접근한 악의적 사용자가 클러스터 전체 권한 상승을 수행할 수 있습니다. 공격자는 daemonset 생성/수정, 서비스 계정 토큰 생성, 서비스 계정 권장(impersonate) 기능을 악용해 관리자 권한을 획득할 수 있습니다.
💡 쉬운 설명
Kanister 보안 도구가 필요 이상의 강한 권한을 가지고 있어서, 쿠버네티스 서버에 접근한 공격자가 전체 시스템을 제어할 수 있게 됩니다. 도구 관리자가 권한을 최소한으로 제한하면 문제가 해결됩니다.
🇺🇸 원문 (English)
Kanister is a data protection workflow management tool. The kanister has a deployment called default-kanister-operator, which is bound with a ClusterRole called edit via ClusterRoleBinding. The "edit" ClusterRole is one of Kubernetes default-created ClusterRole, and it has the create/patch/udpate verbs of daemonset resources, create verb of serviceaccount/token resources, and impersonate verb of serviceaccounts resources. A malicious user can leverage access the worker node which has this component to make a cluster-level privilege escalation.
📍 영향받는 시스템
Kanister default-kanister-operator가 설치된 모든 Kubernetes 클러스터 (버전 미지정)
⚔️ 공격 벡터
워커 노드 접근 후 ClusterRole binding을 통해 daemonset 조작, 서비스 계정 토큰 생성, 권한 상승을 순차적으로 수행
🛡️ 대응 방법
default-kanister-operator의 ClusterRoleBinding을 edit에서 최소 필요 권한의 커스텀 ClusterRole로 변경하거나, 네임스페이스 범위의 Role로 축소
🔧 검증 코드
kanister-operator 관련 바인딩에서 edit ClusterRole이 나타나면 취약점이 존재하는 상태입니다. 다른 최소 권한 역할이 표시되면 패치된 상태입니다.
kubectl get clusterrolebinding -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.roleRef.name}{"\n"}{end}' | grep kanister