CVE-2024-5321
Medium · 6.1CVSS
6.1
EPSS
0.3%
Published
Jul 18, 2024
CISA due date
—
Cloudanix analysis
On Windows computers running container workloads, ordinary user accounts could view or change application logs that should have been restricted.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Container Runtime
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Improper file permissions on Windows nodes allow BUILTIN\Users to read container logs and NT AUTHORITY\Authenticated Users to modify them, bypassing intended authorization controls for log files.
Why it matters to the business
Attackers with limited access on affected nodes can view sensitive application data in logs or alter records, complicating incident response and potentially exposing operational details.
How an attack unfolds
An attacker who obtains a low-privileged account on a Windows Kubernetes node enumerates log directories, reads container output files, or overwrites entries to hide activity or inject false data.
How to fix it
Upgrade Kubernetes to a version that enforces correct ACLs on Windows node log paths; restrict node access and apply least-privilege file permissions where possible.
How to confirm the fix worked
Verify that log directories deny read access to BUILTIN\Users and write access to NT AUTHORITY\Authenticated Users; test by attempting access from non-privileged accounts after upgrade.
Typical attack path
- Obtain local user access on a Windows Kubernetes node via credential theft or misconfiguration
- Locate container log directories without elevated privileges
- Read log contents to extract sensitive information or modify files to tamper with records
How to detect it
Review Windows file access logs and Kubernetes node audit events for non-admin accounts reading or writing container log paths; correlate with user logon events on Windows nodes.
- Access to C:\var\log\pods or equivalent container log directories by non-system accounts
- Event ID 4663 with Object Name containing container log files and SubjectUserName not in privileged groups
What your security team should do
- Prioritize patching Windows nodes in Kubernetes clusters to restore proper log authorization
- Audit node access controls and limit who can log in to Windows hosts
- Monitor for unusual log file access patterns using host-based logging
The record
A security issue was discovered in Kubernetes clusters with Windows nodes where BUILTIN\Users may be able to read container logs and NT AUTHORITY\Authenticated Users may be able to modify container logs.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | k8s.io/kubernetes | 0 | 1.27.16 |
| Go | k8s.io/kubernetes | 1.28.0 | 1.28.12 |
| Go | k8s.io/kubernetes | 1.29.0 | 1.29.7 |
| Go | k8s.io/kubernetes | 1.30.0 | 1.30.3 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.3-r1 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.3-r1 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.3-r1 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.3-r2 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.3-r2 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.3-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.32.0-r3 |
| Chainguard | aws-ebs-csi-driver-fips | 0 | 1.32.0-r3 |
| Chainguard | aws-efs-csi-driver | 0 | 2.1.1-r0 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 2.1.14-r1 |
| Chainguard | calico-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-apiserver | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-app-policy | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-calicoctl | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-cni | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-cni-compat | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-felix | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-kube-controllers | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-node | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-pod2daemon | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-pod2daemon-flexvol-compat | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-typha-client | 0 | 3.27.5-r33 |
| Chainguard | calico-3.27-typhad | 0 | 3.27.5-r33 |
| Chainguard | calico-apiserver-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-apiserver-compat-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-apiserver-compat-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-apiserver-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-apiserver-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-app-policy-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-app-policy-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-app-policy-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-cni-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-cni-compat-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-cni-compat-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-cni-compat-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-cni-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-cni-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-felix-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-felix-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-felix-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-key-cert-provisioner-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-kube-controllers-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-kube-controllers-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-kube-controllers-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-node-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-node-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-node-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-pod2daemon-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-pod2daemon-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-pod2daemon-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-pod2daemon-flexvol-compat-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-pod2daemon-flexvol-compat-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-typha-client-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-typha-client-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-typha-client-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calico-typhad-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calico-typhad-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-typhad-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | calicoctl-3.27 | 0 | 3.27.5-r33 |
| Chainguard | calicoctl-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calicoctl-fips-3.28 | 0 | 3.28.3-r33 |
| Chainguard | cluster-autoscaler-1.28 | 0 | 1.28.5-r3 |
| Chainguard | cluster-autoscaler-1.28-compat | 0 | 1.28.5-r3 |
| Chainguard | cluster-autoscaler-1.29 | 0 | 1.29.4-r0 |
| Chainguard | cluster-autoscaler-1.29-compat | 0 | 1.29.4-r0 |
| Chainguard | cluster-autoscaler-1.30 | 0 | 1.30.2-r1 |
| Chainguard | cluster-autoscaler-1.30-compat | 0 | 1.30.2-r1 |
| Chainguard | cluster-autoscaler-fips-1.28 | 0 | 1.28.6-r1 |
| Chainguard | cluster-autoscaler-fips-1.28-compat | 0 | 1.28.6-r1 |
| Chainguard | cluster-autoscaler-fips-1.29 | 0 | 1.29.5-r8 |
| Chainguard | cluster-autoscaler-fips-1.29-compat | 0 | 1.29.5-r8 |
| Chainguard | cluster-autoscaler-fips-1.30 | 0 | 1.30.2-r1 |
| Chainguard | cluster-autoscaler-fips-1.30-compat | 0 | 1.30.2-r1 |
| Chainguard | cri-tools | 0 | 1.30.1-r1 |
| Chainguard | crictl | 0 | 1.30.1-r1 |
| Chainguard | critest | 0 | 1.30.1-r1 |
| Chainguard | gpu-feature-discovery | 0 | 0.8.2-r3 |
| Chainguard | gpu-feature-discovery | 0 | 0.8.2-r4 |
| Chainguard | ip-masq-agent | 0 | 2.9.3-r14 |
| Chainguard | kube-apiserver-1.27 | 0 | 0 |
| Chainguard | kube-apiserver-1.27-default | 0 | 0 |
| Chainguard | kube-apiserver-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kube-apiserver-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kube-apiserver-fips-1.29 | 0 | 0 |
| Chainguard | kube-apiserver-fips-1.29-default | 0 | 0 |
| Chainguard | kube-apiserver-fips-1.30 | 0 | 0 |
| Chainguard | kube-apiserver-fips-1.30-default | 0 | 0 |
| Chainguard | kube-apiserver-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kube-controller-manager-1.27 | 0 | 0 |
| Chainguard | kube-controller-manager-1.27-default | 0 | 0 |
| Chainguard | kube-controller-manager-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kube-controller-manager-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kube-controller-manager-fips-1.29 | 0 | 0 |
| Chainguard | kube-controller-manager-fips-1.29-default | 0 | 0 |
| Chainguard | kube-controller-manager-fips-1.30 | 0 | 0 |
| Chainguard | kube-controller-manager-fips-1.30-default | 0 | 0 |
| Chainguard | kube-controller-manager-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kube-proxy-1.27 | 0 | 0 |
| Chainguard | kube-proxy-1.27-default | 0 | 0 |
| Chainguard | kube-proxy-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kube-proxy-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kube-proxy-fips-1.29 | 0 | 0 |
| Chainguard | kube-proxy-fips-1.29-default | 0 | 0 |
| Chainguard | kube-proxy-fips-1.30 | 0 | 0 |
| Chainguard | kube-proxy-fips-1.30-default | 0 | 0 |
| Chainguard | kube-proxy-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kube-scheduler-1.27 | 0 | 0 |
| Chainguard | kube-scheduler-1.27-default | 0 | 0 |
| Chainguard | kube-scheduler-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kube-scheduler-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kube-scheduler-fips-1.29 | 0 | 0 |
| Chainguard | kube-scheduler-fips-1.29-default | 0 | 0 |
| Chainguard | kube-scheduler-fips-1.30 | 0 | 0 |
| Chainguard | kube-scheduler-fips-1.30-default | 0 | 0 |
| Chainguard | kube-scheduler-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kubeadm-1.27 | 0 | 0 |
| Chainguard | kubeadm-1.27-default | 0 | 0 |
| Chainguard | kubeadm-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kubeadm-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kubeadm-fips-1.29 | 0 | 0 |
| Chainguard | kubeadm-fips-1.29-default | 0 | 0 |
| Chainguard | kubeadm-fips-1.30 | 0 | 0 |
| Chainguard | kubeadm-fips-1.30-default | 0 | 0 |
| Chainguard | kubeadm-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kubectl-1.27 | 0 | 0 |
| Chainguard | kubectl-1.27-default | 0 | 0 |
| Chainguard | kubectl-bash-completion-1.27 | 0 | 0 |
| Chainguard | kubectl-bash-completion-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kubectl-bash-completion-fips-1.29 | 0 | 0 |
| Chainguard | kubectl-bash-completion-fips-1.30 | 0 | 0 |
| Chainguard | kubectl-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kubectl-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kubectl-fips-1.29 | 0 | 0 |
| Chainguard | kubectl-fips-1.29-default | 0 | 0 |
| Chainguard | kubectl-fips-1.30 | 0 | 0 |
| Chainguard | kubectl-fips-1.30-default | 0 | 0 |
| Chainguard | kubectl-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kubeflow-pipelines | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-apiserver | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-cache-deployer | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-cache-deployer-compat | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-cache_server | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-frontend | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-metadata-envoy-config | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-metadata-writer | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-metadata-writer-compat | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-persistence_agent | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-scheduledworkflow | 0 | 2.2.0-r8 |
| Chainguard | kubeflow-pipelines-viewer-crd-controller | 0 | 2.2.0-r8 |
| Chainguard | kubelet-1.27 | 0 | 0 |
| Chainguard | kubelet-1.27-default | 0 | 0 |
| Chainguard | kubelet-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kubelet-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kubelet-fips-1.29 | 0 | 0 |
| Chainguard | kubelet-fips-1.29-default | 0 | 0 |
| Chainguard | kubelet-fips-1.30 | 0 | 0 |
| Chainguard | kubelet-fips-1.30-default | 0 | 0 |
| Chainguard | kubelet-fips-1.30-default-compat | 0 | 0 |
| Chainguard | kubernetes-1.27 | 0 | 0 |
| Chainguard | kubernetes-1.27-default | 0 | 0 |
| Chainguard | kubernetes-csi-driver-hostpath | 0 | 1.14.0-r3 |
| Chainguard | kubernetes-dns-node-cache | 0 | 1.23.1-r3 |
| Chainguard | kubernetes-dns-node-cache-fips | 0 | 1.23.1-r2 |
| Chainguard | kubernetes-fips-1.28 | 0 | 1.28.15-r9 |
| Chainguard | kubernetes-fips-1.28-default | 0 | 1.28.15-r9 |
| Chainguard | kubernetes-fips-1.29 | 0 | 0 |
| Chainguard | kubernetes-fips-1.29-default | 0 | 0 |
| Chainguard | kubernetes-fips-1.30 | 0 | 0 |
| Chainguard | kubernetes-fips-1.30-default | 0 | 0 |
| Chainguard | kubernetes-pause-fips-3.9 | 0 | 0 |
| Chainguard | kubernetes-pause-fips-3.9 | 0 | 1.28.15-r9 |
| Chainguard | local-static-provisioner | 0 | 2.7.0-r5 |
| Chainguard | local-static-provisioner-compat | 0 | 2.7.0-r5 |
| Chainguard | local-volume-node-cleanup | 0 | 2.7.0-r5 |
| Chainguard | local-volume-node-cleanup-compat | 0 | 2.7.0-r5 |
| Chainguard | node-feature-discovery-0.15 | 0 | 0.15.6-r1 |
| Chainguard | node-feature-discovery-0.16 | 0 | 0.16.3-r1 |
| Chainguard | nodetaint | 0 | 0.0.4-r21 |
| Chainguard | rancher-webhook-0.4 | 0 | 0.4.18-r2 |
| Chainguard | rancher-webhook-0.4 | 0 | 0.4.9-r1 |
| Chainguard | rancher-webhook-fips-0.4 | 0 | 0.4.18-r4 |
| Chainguard | rancher-webhook-fips-0.5 | 0 | 0.5.11-r0 |
| Chainguard | spark-operator | 0 | 1.4.3-r1 |
| Chainguard | spark-operator-oci-entrypoint | 0 | 1.4.3-r1 |
| Chainguard | sparkctl | 0 | 1.4.3-r1 |
| Ubuntu:20.04:LTS | kubernetes | 0 | No fix |
| Ubuntu:22.04:LTS | kubernetes | 0 | No fix |
| Ubuntu:24.04:LTS | kubernetes | 0 | No fix |
| Ubuntu:24.10 | kubernetes | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | kubernetes | 0 | No fix |
| Wolfi | argo-cd-2.12 | 0 | 2.12.3-r1 |
Related vulnerabilities
- CVE-2025-13281 A half-blind Server Side Request Forgery (SSRF) vulnerability exists in… 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-3177 A security issue was discovered in Kubernetes where users may be able to launch… Also affects k8s.io/kubernetes
- CVE-2019-11253 Improper input validation in the Kubernetes API server in versions v1.0-1.12 and versions… Also affects k8s.io/kubernetes
- CVE-2025-61725 The ParseAddress function constructs domain-literal address components through repeated… Also affects argo-cd-2.12
- CVE-2025-58185 Parsing a maliciously crafted DER payload could allocate large amounts of memory, causing… Also affects argo-cd-2.12
- CVE-2025-58183 tar.Reader does not set a maximum size on the number of sparse region data blocks in GNU… Also affects argo-cd-2.12
- CVE-2025-58186 Despite HTTP headers having a default limit of 1MB, the number of cookies that can be… Also affects argo-cd-2.12