피드로 돌아가기
Kubernetes BlogSecurity
원문 읽기
Kubernetes v1.35에서 kubeconfig의 exec 플러그인 실행을 allowList로 제한하여 공급망 공격으로 인한 임의 코드 실행 위험 차단
Kubernetes v1.35: Restricting executables invoked by kubeconfigs via exec plugin allowList added to kuberc
AI 요약
Context
kubectl은 kubeconfig의 users[n].exec.command 필드를 통해 사용자 권한으로 임의의 실행파일을 실행할 수 있다. 공급망 공격이나 kubeconfig 생성 파이프라인 손상 시 공격자가 사용자 시스템에서 악의적 코드를 실행할 수 있는 보안 취약점이 존재했다.
Technical Solution
- kuberc 설정 파일에 credentialPluginPolicy 필드 추가: AllowAll, DenyAll, Allowlist 3가지 정책 중 선택 가능
- kuberc 설정 파일에 credentialPluginAllowlist 필드 추가: 실행 허용할 credential 플러그인의 이름을 basename 또는 전체 경로로 지정
- client-go 라이브러리를 사용하는 모든 클라이언트에 ExecProvider.PluginPolicy 구조체 제공: 애플리케이션 코드 레벨에서 정책 설정 가능
- DenyAll 정책으로 설정하여 현재 실행 중인 플러그인 식별: "plugin "cloudco-login" not allowed" 오류 메시지를 통해 debug 가능
- 전체 경로 지정 방식을 권장: basename 지정 시 exec.LookPath로 경로 조회되므로 보안 범위가 더 넓어짐
Key Takeaway
Kubernetes가 인증 기능의 편의성을 유지하면서 정책 기반의 화이트리스트 메커니즘으로 보안을 강화한 것처럼, 외부 플러그인을 사용하는 시스템에서는 실행 권한 범위를 명시적으로 제한하고 전체 경로 지정을 기본으로 하는 정책 설계가 공급망 공격 방어의 필수 요소이다.
실천 포인트
kubeconfig를 사용하는 Kubernetes 관리자 환경에서 credentialPluginPolicy를 Allowlist로 설정하고 필요한 플러그인만 credentialPluginAllowlist에 전체 경로로 등록하면, 손상된 kubeconfig나 악성 플러그인에 의한 임의 코드 실행을 사전에 차단할 수 있다. DenyAll 정책으로 먼저 테스트하여 현재 환경에서 실행되는 모든 플러그인을 식별한 후 필요한 것만 명시적으로 허용하는 방식을 권장한다.