🇰🇷 한글 설명
calicoctl을 --log-level=info 또는 --log-level=debug로 실행할 때 stderr에 kubeconfig 토큰, Kubernetes API 토큰, etcd 비밀번호, etcd 클라이언트 인증서/키 등 모든 자격증명이 노출되는 취약점입니다. CI 로그, 세션 기록, 지원 티켓 등 stderr을 접근할 수 있는 누구나 cluster 자격증명을 탈취할 수 있습니다.
💡 쉬운 설명
calicoctl을 상세 로깅 모드로 실행하면 cluster 접속에 필요한 모든 비밀번호와 토큰이 화면에 노출됩니다. 이를 본 누구나 당신의 cluster에 접속할 수 있습니다.
🇺🇸 원문 (English)
When calicoctl is invoked with --log-level=info or --log-level=debug, the client prints the full contents of its loaded connection-configuration struct to stderr in a single log line. The struct embeds every credential calicoctl uses to talk to the cluster — inline kubeconfig (with bearer token), Kubernetes API bearer token, etcd password, and inline PEM-encoded etcd client certificate and key. Any reader of that stderr stream — CI job logs, session-recording archives, shared support-ticket transcripts, or local filesystem viewers on the host that ran calicoctl — can extract these credentials with zero Kubernetes privilege. calicoctl's default log level is panic, so this issue only triggers when verbose logging is explicitly enabled.
📍 영향받는 시스템
calicoctl (모든 버전, 기본값 log level은 panic이므로 verbose 옵션 사용 시에만 영향)
⚔️ 공격 벡터
calicoctl --log-level=info 또는 --log-level=debug 옵션으로 실행된 stderr 로그 캡처
🛡️ 대응 방법
verbose 로깅 옵션(--log-level=info/debug) 사용 금지 또는 보안 패치가 적용된 최신 calicoctl로 업그레이드
🔧 검증 코드
설치된 calicoctl 버전이 표시되면 해당 버전의 보안 권고사항을 확인하고, 설치되지 않았으면 영향 없음
calicoctl version 2>/dev/null || echo 'calicoctl not installed'