CVE-2025-0426
Medium · 6.2CVSS
6.2
EPSS
0.4%
Published
Feb 13, 2025
CISA due date
—
Cloudanix analysis
Attackers can overwhelm a Kubernetes node by repeatedly requesting checkpoints through an unprotected management interface, eventually filling up the disk and stopping all work on that machine.
- Exploitation
- Other
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Other
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Unauthenticated requests to the kubelet read-only HTTP endpoint can trigger repeated container checkpoint operations that consume disk space until the node becomes unavailable.
Why it matters to the business
Workloads on affected nodes may stop running, causing service outages and requiring manual intervention to restore capacity.
How an attack unfolds
An attacker discovers an exposed kubelet read-only port and issues a high volume of checkpoint requests for containers; each request writes checkpoint data to disk, eventually exhausting storage and triggering a node-level denial of service.
How to fix it
Disable the kubelet read-only port or restrict it to localhost only; ensure any future Kubernetes updates that address checkpoint handling are applied promptly.
How to confirm the fix worked
Inspect kubelet configuration for the --read-only-port flag or equivalent; attempt a single checkpoint request from a non-localhost address to confirm the endpoint is no longer reachable.
Typical attack path
- Scan for publicly reachable kubelet read-only ports (typically 10255)
- Send repeated unauthenticated checkpoint requests for multiple containers
- Monitor disk utilization until the node reports storage pressure or becomes unresponsive
How to detect it
Search kubelet and container runtime logs for repeated checkpoint request entries; correlate with rapid increases in disk usage under checkpoint directories and node eviction or NotReady events.
- checkpoint request
- kubelet.*checkpoint
- /var/lib/kubelet/checkpoints
What your security team should do
- Immediately disable or firewall the kubelet read-only endpoint across all clusters
- Add network policies or host firewall rules to block external access to port 10255
- Monitor node disk usage for sudden spikes correlated with checkpoint activity
- Review and apply any subsequent Kubernetes releases that harden checkpoint behavior
The record
A security issue was discovered in Kubernetes where a large number of container checkpoint requests made to the unauthenticated kubelet read-only HTTP endpoint may cause a Node Denial of Service by filling the Node's disk.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | k8s.io/kubernetes | 0 | 1.29.14 |
| Go | k8s.io/kubernetes | 1.30.0 | 1.30.10 |
| Go | k8s.io/kubernetes | 1.31.0 | 1.31.6 |
| Go | k8s.io/kubernetes | 1.32.0 | 1.32.2 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-2.13 | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-2.13-compat | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 2.13.5-r2 |
| Chainguard | argo-cd-2.14 | 0 | 2.14.2-r1 |
| Chainguard | argo-cd-2.14-compat | 0 | 2.14.2-r1 |
| Chainguard | argo-cd-2.14-repo-server | 0 | 2.14.2-r1 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r2 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.5-r1 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 2.13.5-r1 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 2.13.5-r1 |
| Chainguard | argo-cd-fips-2.14 | 0 | 2.14.2-r1 |
| Chainguard | argo-cd-fips-2.14-compat | 0 | 2.14.2-r1 |
| Chainguard | argo-cd-fips-2.14-repo-server | 0 | 2.14.2-r1 |
| Chainguard | argo-rollouts | 0 | 1.8.0-r2 |
| Chainguard | argo-rollouts-compat | 0 | 1.8.0-r2 |
| Chainguard | argo-rollouts-fips | 0 | 1.8.0-r2 |
| Chainguard | argocd-image-updater | 0 | 0.17.0-r1 |
| Chainguard | argocd-image-updater-compat | 0 | 0.17.0-r1 |
| Chainguard | argocd-image-updater-fips | 0 | 0.17.0-r2 |
| Chainguard | aws-ebs-csi-driver | 0 | 1.39.0-r2 |
| Chainguard | aws-ebs-csi-driver-fips | 0 | 1.39.0-r3 |
| Chainguard | aws-efs-csi-driver | 0 | 2.1.7-r0 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 2.1.7-r0 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.12-r9 |
| Chainguard | azuredisk-csi-1.28-compat | 0 | 1.28.12-r9 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.14-r9 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.14-r9 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.7-r3 |
| Chainguard | azuredisk-csi-1.30-compat | 0 | 1.30.7-r3 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.3-r1 |
| Chainguard | azuredisk-csi-1.31-compat | 0 | 1.31.3-r1 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.12-r8 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.14-r8 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.7-r3 |
| Chainguard | azuredisk-csi-fips-1.31 | 0 | 1.31.3-r1 |
| Chainguard | calico-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-compat-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-app-policy-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-app-policy-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-compat-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-compat-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-felix-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-felix-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-key-cert-provisioner-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-key-cert-provisioner-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-kube-controllers-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-kube-controllers-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-node-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-node-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-pod2daemon-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-pod2daemon-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-typha-client-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-typha-client-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-typhad-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-typhad-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calicoctl-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calicoctl-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | cluster-autoscaler-1.29 | 0 | 1.29.5-r6 |
| Chainguard | cluster-autoscaler-1.29-compat | 0 | 1.29.5-r6 |
| Chainguard | cluster-autoscaler-1.30 | 0 | 1.30.3-r7 |
| Chainguard | cluster-autoscaler-1.30-compat | 0 | 1.30.3-r7 |
| Chainguard | cluster-autoscaler-1.31 | 0 | 1.31.5-r1 |
| Chainguard | cluster-autoscaler-1.31-compat | 0 | 1.31.5-r1 |
| Chainguard | cluster-autoscaler-1.32 | 0 | 1.32.0-r3 |
| Chainguard | cluster-autoscaler-1.32-compat | 0 | 1.32.0-r3 |
| Chainguard | cluster-autoscaler-fips-1.29 | 0 | 1.29.5-r5 |
| Chainguard | cluster-autoscaler-fips-1.29-compat | 0 | 1.29.5-r5 |
| Chainguard | cluster-autoscaler-fips-1.30 | 0 | 1.30.3-r6 |
| Chainguard | cluster-autoscaler-fips-1.30-compat | 0 | 1.30.3-r6 |
| Chainguard | cluster-autoscaler-fips-1.31 | 0 | 1.31.1-r5 |
| Chainguard | cluster-autoscaler-fips-1.31-compat | 0 | 1.31.1-r5 |
| Chainguard | cluster-autoscaler-fips-1.32 | 0 | 1.32.0-r4 |
| Chainguard | cluster-autoscaler-fips-1.32-compat | 0 | 1.32.0-r4 |
| Chainguard | emissary | 0 | 3.10.0-r12 |
| Chainguard | emissary-apiext | 0 | 3.10.0-r12 |
| Chainguard | emissary-oci-entrypoint | 0 | 3.10.0-r12 |
| Chainguard | ip-masq-agent | 0 | 2.12.0-r5 |
| Chainguard | kapp | 0 | 0.64.0-r4 |
| Chainguard | kapp-fips | 0 | 0.64.0-r3 |
| Chainguard | kube-apiserver-1.29 | 0 | 1.29.14-r0 |
| Chainguard | kube-apiserver-1.29-default | 0 | 1.29.14-r0 |
| Chainguard | kube-apiserver-1.30 | 0 | 1.30.10-r0 |
| Chainguard | kube-apiserver-1.30-default | 0 | 1.30.10-r0 |
| Chainguard | kube-apiserver-1.30-default-compat | 0 | 1.30.10-r0 |
| Chainguard | kube-apiserver-1.31 | 0 | 1.31.6-r0 |
| Chainguard | kube-apiserver-1.31-default | 0 | 1.31.6-r0 |
| Chainguard | kube-apiserver-1.31-default-compat | 0 | 1.31.6-r0 |
| Chainguard | kube-apiserver-1.32 | 0 | 1.32.2-r0 |
| Chainguard | kube-apiserver-1.32-default | 0 | 1.32.2-r0 |
| Chainguard | kube-apiserver-1.32-default-compat | 0 | 1.32.2-r0 |
| Chainguard | kube-apiserver-fips-1.29 | 0 | 1.29.14-r1 |
| Chainguard | kube-apiserver-fips-1.29-default | 0 | 1.29.14-r1 |
| Chainguard | kube-apiserver-fips-1.30 | 0 | 1.30.10-r1 |
| Chainguard | kube-apiserver-fips-1.30-default | 0 | 1.30.10-r1 |
| Chainguard | kube-apiserver-fips-1.30-default-compat | 0 | 1.30.10-r1 |
| Chainguard | kube-apiserver-fips-1.31 | 0 | 1.31.6-r1 |
| Chainguard | kube-apiserver-fips-1.31-default | 0 | 1.31.6-r1 |
| Chainguard | kube-apiserver-fips-1.31-default-compat | 0 | 1.31.6-r1 |
| Chainguard | kube-apiserver-fips-1.32 | 0 | 1.32.2-r1 |
| Chainguard | kube-apiserver-fips-1.32-default | 0 | 1.32.2-r1 |
| Chainguard | kube-apiserver-fips-1.32-default-compat | 0 | 1.32.2-r1 |
| Chainguard | kube-controller-manager-1.29 | 0 | 1.29.14-r0 |
| Chainguard | kube-controller-manager-1.29-default | 0 | 1.29.14-r0 |
| Chainguard | kube-controller-manager-1.30 | 0 | 1.30.10-r0 |
| Chainguard | kube-controller-manager-1.30-default | 0 | 1.30.10-r0 |
| Chainguard | kube-controller-manager-1.30-default-compat | 0 | 1.30.10-r0 |
| Chainguard | kube-controller-manager-1.31 | 0 | 1.31.6-r0 |
| Chainguard | kube-controller-manager-1.31-default | 0 | 1.31.6-r0 |
| Chainguard | kube-controller-manager-1.31-default-compat | 0 | 1.31.6-r0 |
| Chainguard | kube-controller-manager-1.32 | 0 | 1.32.2-r0 |
| Chainguard | kube-controller-manager-1.32-default | 0 | 1.32.2-r0 |
| Chainguard | kube-controller-manager-1.32-default-compat | 0 | 1.32.2-r0 |
| Chainguard | kube-controller-manager-fips-1.29 | 0 | 1.29.14-r1 |
| Chainguard | kube-controller-manager-fips-1.29-default | 0 | 1.29.14-r1 |
| Chainguard | kube-controller-manager-fips-1.30 | 0 | 1.30.10-r1 |
| Chainguard | kube-controller-manager-fips-1.30-default | 0 | 1.30.10-r1 |
| Chainguard | kube-controller-manager-fips-1.30-default-compat | 0 | 1.30.10-r1 |
| Chainguard | kube-controller-manager-fips-1.31 | 0 | 1.31.6-r1 |
| Chainguard | kube-controller-manager-fips-1.31-default | 0 | 1.31.6-r1 |
| Chainguard | kube-controller-manager-fips-1.31-default-compat | 0 | 1.31.6-r1 |
| Chainguard | kube-controller-manager-fips-1.32 | 0 | 1.32.2-r1 |
| Chainguard | kube-controller-manager-fips-1.32-default | 0 | 1.32.2-r1 |
| Chainguard | kube-controller-manager-fips-1.32-default-compat | 0 | 1.32.2-r1 |
| Chainguard | kube-proxy-1.29 | 0 | 1.29.14-r0 |
| Chainguard | kube-proxy-1.29-default | 0 | 1.29.14-r0 |
| Chainguard | kube-proxy-1.29-default-compat | 0 | 1.29.14-r0 |
| Chainguard | kube-proxy-1.30 | 0 | 1.30.10-r0 |
| Chainguard | kube-proxy-1.30-default | 0 | 1.30.10-r0 |
| Chainguard | kube-proxy-1.30-default-compat | 0 | 1.30.10-r0 |
| Chainguard | kube-proxy-1.31 | 0 | 1.31.6-r0 |
| Chainguard | kube-proxy-1.31-default | 0 | 1.31.6-r0 |
| Chainguard | kube-proxy-1.31-default-compat | 0 | 1.31.6-r0 |
| Chainguard | kube-proxy-1.32 | 0 | 1.32.2-r0 |
| Chainguard | kube-proxy-1.32-default | 0 | 1.32.2-r0 |
| Chainguard | kube-proxy-1.32-default-compat | 0 | 1.32.2-r0 |
| Chainguard | kube-proxy-fips-1.29 | 0 | 1.29.14-r1 |
| Chainguard | kube-proxy-fips-1.29-default | 0 | 1.29.14-r1 |
| Chainguard | kube-proxy-fips-1.30 | 0 | 1.30.10-r1 |
| Chainguard | kube-proxy-fips-1.30-default | 0 | 1.30.10-r1 |
| Chainguard | kube-proxy-fips-1.30-default-compat | 0 | 1.30.10-r1 |
| Chainguard | kube-proxy-fips-1.31 | 0 | 1.31.6-r1 |
| Chainguard | kube-proxy-fips-1.31-default | 0 | 1.31.6-r1 |
| Chainguard | kube-proxy-fips-1.31-default-compat | 0 | 1.31.6-r1 |
| Chainguard | kube-proxy-fips-1.32 | 0 | 1.32.2-r1 |
| Chainguard | kube-proxy-fips-1.32-default | 0 | 1.32.2-r1 |
| Chainguard | kube-proxy-fips-1.32-default-compat | 0 | 1.32.2-r1 |
| Chainguard | kube-scheduler-1.29 | 0 | 1.29.14-r0 |
| Chainguard | kube-scheduler-1.29-default | 0 | 1.29.14-r0 |
| Chainguard | kube-scheduler-1.30 | 0 | 1.30.10-r0 |
| Chainguard | kube-scheduler-1.30-default | 0 | 1.30.10-r0 |
| Chainguard | kube-scheduler-1.30-default-compat | 0 | 1.30.10-r0 |
| Chainguard | kube-scheduler-1.31 | 0 | 1.31.6-r0 |
| Chainguard | kube-scheduler-1.31-default | 0 | 1.31.6-r0 |
| Chainguard | kube-scheduler-1.31-default-compat | 0 | 1.31.6-r0 |
| Chainguard | kube-scheduler-1.32 | 0 | 1.32.2-r0 |
| Chainguard | kube-scheduler-1.32-default | 0 | 1.32.2-r0 |
| Chainguard | kube-scheduler-1.32-default-compat | 0 | 1.32.2-r0 |
| Chainguard | kube-scheduler-fips-1.29 | 0 | 1.29.14-r1 |
| Chainguard | kube-scheduler-fips-1.29-default | 0 | 1.29.14-r1 |
| Chainguard | kube-scheduler-fips-1.30 | 0 | 1.30.10-r1 |
| Chainguard | kube-scheduler-fips-1.30-default | 0 | 1.30.10-r1 |
| Chainguard | kube-scheduler-fips-1.30-default-compat | 0 | 1.30.10-r1 |
| Chainguard | kube-scheduler-fips-1.31 | 0 | 1.31.6-r1 |
| Chainguard | kube-scheduler-fips-1.31-default | 0 | 1.31.6-r1 |
| Chainguard | kube-scheduler-fips-1.31-default-compat | 0 | 1.31.6-r1 |
| Chainguard | kube-scheduler-fips-1.32 | 0 | 1.32.2-r1 |
| Chainguard | kube-scheduler-fips-1.32-default | 0 | 1.32.2-r1 |
| Chainguard | kube-scheduler-fips-1.32-default-compat | 0 | 1.32.2-r1 |
| Chainguard | kubeadm-1.29 | 0 | 1.29.14-r0 |
| Chainguard | kubeadm-1.29-default | 0 | 1.29.14-r0 |
| Chainguard | kubeadm-1.30 | 0 | 1.30.10-r0 |
| Chainguard | kubeadm-1.30-default | 0 | 1.30.10-r0 |
| Chainguard | kubeadm-1.30-default-compat | 0 | 1.30.10-r0 |
| Chainguard | kubeadm-1.31 | 0 | 1.31.6-r0 |
| Chainguard | kubeadm-1.31-default | 0 | 1.31.6-r0 |
| Chainguard | kubeadm-1.31-default-compat | 0 | 1.31.6-r0 |
| Chainguard | kubeadm-1.32 | 0 | 1.32.2-r0 |
| Chainguard | kubeadm-1.32-default | 0 | 1.32.2-r0 |
| Chainguard | kubeadm-1.32-default-compat | 0 | 1.32.2-r0 |
| Chainguard | kubeadm-fips-1.29 | 0 | 1.29.14-r1 |
| Chainguard | kubeadm-fips-1.29-default | 0 | 1.29.14-r1 |
| Chainguard | kubeadm-fips-1.30 | 0 | 1.30.10-r1 |
| Chainguard | kubeadm-fips-1.30-default | 0 | 1.30.10-r1 |
| Chainguard | kubeadm-fips-1.30-default-compat | 0 | 1.30.10-r1 |
| Chainguard | kubeadm-fips-1.31 | 0 | 1.31.6-r1 |
Related vulnerabilities
- CVE-2025-13281 A half-blind Server Side Request Forgery (SSRF) vulnerability exists in… Also affects k8s.io/kubernetes
- CVE-2025-5187 A vulnerability exists in the NodeRestriction admission controller in Kubernetes clusters… Also affects k8s.io/kubernetes
- CVE-2025-4563 A vulnerability exists in the NodeRestriction admission controller where nodes can bypass… Also affects k8s.io/kubernetes
- CVE-2025-1767 This CVE only affects Kubernetes clusters that utilize the in-tree gitRepo volume to… Also affects k8s.io/kubernetes
- CVE-2024-9042 This CVE affects only Windows worker nodes. Also affects k8s.io/kubernetes
- CVE-2024-10220 The Kubernetes kubelet component allows arbitrary command execution via specially crafted… Also affects k8s.io/kubernetes
- CVE-2024-0793 A flaw was found in kube-controller-manager. Also affects k8s.io/kubernetes
- CVE-2024-5321 A security issue was discovered in Kubernetes clusters with Windows nodes where… Also affects k8s.io/kubernetes