🇰🇷 한글 설명
Calico의 install-cni 컨테이너가 CNI 설정 로깅 시 서비스 계정 토큰을 노출시키는 취약점입니다. 공격자는 네임스페이스의 pod/log 권한을 이용해 토큰을 획득하고, 이를 통해 파드 상태 수정 권한을 악용할 수 있습니다.
💡 쉬운 설명
Calico 시스템이 설정 파일을 기록할 때 비밀번호와 같은 중요한 인증 정보를 실수로 화면에 출력하는 문제입니다. 이 정보를 본 공격자가 클러스터의 다른 리소스를 마음대로 조작할 수 있게 됩니다.
🇺🇸 원문 (English)
In Calico, the install-cni init container logs the rendered CNI configuration to standard output. When the configuration template uses the __SERVICEACCOUNT_TOKEN__ placeholder (Canal/Flannel-Calico deployments), the installer substitutes the live Kubernetes ServiceAccount bearer token before logging, exposing the token to any authenticated user with pods/log permission in the namespace with calico-node. The token holds patch privileges on pods/status, enabling annotation-based attacks against cluster workloads. The default kubeconfig-based authentication path is not affected. This is a direct regression of TTA-2018-001.
📍 영향받는 시스템
Calico (Canal/Flannel-Calico 배포 환경)
⚔️ 공격 벡터
네임스페이스 내 pod/log 권한을 가진 사용자가 install-cni 컨테이너의 표준 출력 로그를 확인하여 토큰 탈취
🛡️ 대응 방법
Calico를 최신 보안 패치가 적용된 버전으로 업그레이드하거나, 토큰 로깅을 방지하는 구성 변경 적용
🔧 검증 코드
명령어 실행 시 SERVICEACCOUNT_TOKEN 문자열이 로그에 출력되면 취약점이 존재하는 것으로 판단합니다.
kubectl logs -n calico-system -l k8s-app=calico-node -c install-cni --tail=100 | grep -q 'SERVICEACCOUNT_TOKEN'