Description
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.
Problem types
Product status
Any version before 3.32.0
Any version before 3.21.7
3.22.3 (semver)
Any version before 22.4.0
Credits
Behnam Shobiri
Behnam Shobiri
Anthony Tam
References
github.com/projectcalico/calico/pull/12535
github.com/projectcalico/calico/pull/12536
github.com/projectcalico/calico/pull/12537
www.tigera.io/security-bulletins/tta-2026-003/