Check ID:
Provider: Kubernetes
Service:
Severity: HIGH
Categories:
Resource type:
controllermanager_bind_addressProvider: Kubernetes
Service:
controllermanagerSeverity: HIGH
Categories:
cluster-security, internet-exposedResource type:
PodWhat this check verifies
Kubernetes controller manager uses the loopback bind address127.0.0.1 via --bind-address or --address, keeping its health, metrics, and debug endpoints reachable only from the host
Risk
Listening on a non-loopback address exposes health, metrics, and debug endpoints to the network, enabling control-plane reconnaissance and leakage of internal state. Heavy scraping or profiling can drive resource exhaustion, reducing control-plane availability and stability.Recommendation
Bind to127.0.0.1 and apply defense in depth:
- Prefer local-only endpoints; avoid
0.0.0.0 - Use TLS and authentication if exposure is unavoidable
- Enforce network segmentation for control-plane access
- Disable profiling when not needed; apply least privilege for telemetry
Remediation
Dashboard steps- SSH to the control-plane node running the Controller Manager
- Edit the static Pod manifest: /etc/kubernetes/manifests/kube-controller-manager.yaml
- Under spec.containers[0] command/args, add the flag:
- —bind-address=127.0.0.1
- Save the file; the kubelet will automatically restart the Pod with the new setting
References
Where this check fires
This check runs on every scheduled scan against your Kubernetes account. Findings appear at Cloud Security → Findings filterable byCheck ID = controllermanager_bind_address. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Kubernetes checks