📋 What Is It?
Outdated and Vulnerable Components is running Kubernetes, its add-ons, or the underlying node OS and container runtime at versions with known, publicly documented vulnerabilities - or past end-of-support with no security fixes at all. A cluster is a stack of independently versioned parts: control plane, per-node kubelet/kube-proxy, container runtime (containerd/CRI-O/runc), node kernel, CNI, CSI, ingress controller, dashboard, and mesh sidecars. Each accrues CVEs on its own cadence. The weakness is not a subtle flaw to discover - it is a published advisory with a patch already available, applied everywhere except your cluster.
⚠️ Common Exploits
- Version Fingerprinting:
/version, node metadata, banners advertise the target - Ingress RCE: internet-facing controller reachable with no cluster credentials (IngressNightmare class)
- Runtime Escape: unpatched runc/containerd breaks a pod out to the node (runc-escape class)
- Kubelet / API-Server Privesc: historic patched flaws reach further than intended
- EOL Kernel LPE: unsupported node OS never gets kernel patches
- Stale Add-ons: old Dashboard auth bypass, mesh proxy CVEs across every pod
- Version Skew Debt: falling behind eventually blocks safe upgrades entirely
🔴 Attack Flow
↓
2. Match - look the version up in public advisories / exploit databases
↓
3. Exploit - run the existing exploit (ingress RCE, runtime escape, privesc)
↓
4. Escape / Escalate - break out to the node, harvest tokens and secrets
↓
5. IMPACT: Container escape, infra RCE, cluster-wide takeover!
❌ Vulnerable Code
✅ Secure Code
✓ Prevention Checklist
- Maintain a versioned inventory of every component + owner + EOL date
- Keep Kubernetes on a supported minor (roughly latest three); never run EOL
- Keep kubelets within the supported skew of the API server
- Patch the container runtime and runc on every node
- Keep node OS/kernel on a supported release with updates applied
- Track advisories for ingress, CNI, CSI, dashboard, and mesh
- Subscribe to the Kubernetes security-announce feed
- Scan the cluster (Trivy k8s, kubescape), not only images
- Upgrade one minor at a time, tested on a canary first
- Automate node patching (kured, managed node pools)
- Remove unused add-ons; pin and track the rest via Helm/GitOps
- Retire dockershim/legacy Docker; keep management surfaces private
🔍 Detection & Tools
Kubernetes Tools:
Patch Automation:
How to Test:
kubectl get nodes -o wide- check kubelet, kernel, OS, runtime versions- Confirm the Kubernetes minor is inside the supported window (not EOL)
trivy k8s --report all --severity HIGH,CRITICAL cluster- Run
kubescapeagainst nsa/mitre frameworks on a schedule - Verify kubelet-to-API-server skew is within bounds on every node
🌍 Real-World
- Ingress-Controller RCE (IngressNightmare class): publicly disclosed flaws in widely used ingress controllers let a crafted request or Ingress object inject config or execute code in the internet-facing controller pod - which can read TLS Secrets and watch cluster resources. Clusters never upgraded stayed exploitable long after a fix shipped.
- Container Runtime Escape (runc-escape class): disclosed flaws in
runclet a malicious container overwrite the host runc binary or break isolation and run on the node - turning one pod into control of every pod, Secret, and token scheduled there. - Kubelet / API-Server Privilege Escalation: historic patched flaws let a limited client escalate or reach endpoints without proper authorization - the defense is simply being on a patched version.
Described as vulnerability classes tied to well-known public events - specific CVE identifiers and figures deliberately omitted. The durable lesson is the pattern, not a number.
📌 Quick Tips
- DO NOT run an end-of-life Kubernetes minor or node OS
- DO NOT let kubelets drift outside the supported skew
- DO NOT assume image scanning covers the cluster stack
- DO inventory every component and its EOL date
- DO scan the cluster and upgrade one minor at a time
- DO automate node OS, kernel, and runtime patching
- DO remove unused add-ons and keep surfaces private
📜 Related Risks
Connected OWASP Kubernetes Top 10:
- K09 Misconfigured Components - configuration vs. version
- K02 Supply-Chain - vulnerable images and dependencies
- K07 Missing Segmentation - keep stale surfaces unreachable
- K01 Insecure Workloads - the pod an escape starts from