Check ID:
Provider: Kubernetes
Service:
Severity: MEDIUM
Categories:
Resource type:
controllermanager_disable_profilingProvider: Kubernetes
Service:
controllermanagerSeverity: MEDIUM
Categories:
cluster-securityResource type:
PodWhat this check verifies
Kubernetes Controller Manager is evaluated for the--profiling argument. --profiling=false disables runtime profiling; absence or a different value means profiling is enabled.
Risk
With profiling enabled, debug endpoints expose runtime internals (stacks, memory, file paths), weakening confidentiality. Abusing profiling can raise CPU/memory use and degrade availability. Detailed insights accelerate reconnaissance and can aid escalation when combined with RBAC gaps.Recommendation
Set--profiling=false on the controller manager to remove debug endpoints.
If profiling is needed temporarily:
- Limit access using least privilege and network controls
- Use isolated environments and monitor closely
- Disable promptly to uphold defense in depth
Remediation
Dashboard steps- SSH to each control plane node
- Open /etc/kubernetes/manifests/kube-controller-manager.yaml
- Under spec.containers[0].command add the line: - —profiling=false
- Save the file; kubelet will automatically restart the static Pod
- Verify on the node: ps -ef | grep kube-controller-manager | grep — —profiling=false
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_disable_profiling. 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