CVE-2024-45310 json
runc can be confused to create empty files/directories on the host
published 2024-09-03 2 y ago modified 2026-09-10 1 mo ago also EUVD-2024-2819 , GHSA-jfvp-7x6p-h2pv , GO-2024-3110
- cvss
- 3.6
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 24%
- public exploits
- 0
- none known
Summary
runc is a CLI tool for spawning and running containers according to the OCI specification. runc 1.1.13 and earlier, as well as 1.2.0-rc2 and earlier, can be tricked into creating empty files or directories in arbitrary locations in the host filesystem by sharing a volume between two containers and exploiting a race with `os.MkdirAll`. While this could be used to create empty files, existing files would not be truncated. An attacker must have the ability to start containers using some kind of custom volume configuration. Containers using user namespaces are still affected, but the scope of places an attacker can create inodes can be significantly reduced. Sufficiently strict LSM policies (SELinux/Apparmor) can also in principle block this attack -- we suspect the industry standard SELinux policy may restrict this attack's scope but the exact scope of protection hasn't been analysed. This is exploitable using runc directly as well as through Docker and Kubernetes. The issue is fixed in runc v1.1.14 and v1.2.0-rc3.
Some workarounds are available. Using user namespaces restricts this attack fairly significantly such that the attacker can only create inodes in directories that the remapped root user/group has write access to. Unless the root user is remapped to an actual user on the host (such as with rootless containers that don't use `/etc/sub[ug]id`), this in practice means that an attacker would only be able to create inodes in world-writable directories. A strict enough SELinux or AppArmor policy could in principle also restrict the scope if a specific label is applied to the runc runtime, though neither the extent to which the standard existing policies block this attack nor what exact policies are needed to sufficiently restrict this attack have been thoroughly tested.
Patch / fix
- go github.com/opencontainers/runc 1.1.14, 1.2.0-rc.3
- linuxfoundation runc 1.1.14, 1.2.0-rc.3
- runc Debian 14, Debian 13 1.1.15+ds1-1
debian advisories DEBIAN-CVE-2024-45310
- kubevirt SLE Module for Containers 15 SP7 1.7.0-150700.3.16.2
- apptainer SLES 15 SP6-LTSS, SLE Module for HPC 15 SP7, openSUSE Leap 15.6 1.4.5-150600.4.12.1
- squashfuse SLES 15 SP6-LTSS, SLE Module for HPC 15 SP7, openSUSE Leap 15.6 0.5.0-150600.3.2.1
- runc SLE Module for Containers 15 SP6, SLE Module for Basesystem 15 SP7, SLE Micro 5.5 +17 more 1.2.6-150000.73.2
- runc Linux Micro 6.0 1.2.6-1.1
- runc Linux Micro 6.1 1.2.6-slfo.1.1_1.1
- runc Linux Micro 6.0 1.1.14-1.1
- runc SLE Module for Containers 12 1.1.14-16.55.1
suse advisories SUSE-SU-2026:0479-1SUSE-SU-2026:0439-1SUSE-SU-2025:02198-2SUSE-SU-2025:02198-1SUSE-SU-2025:20335-1SUSE-SU-2025:20353-1
- ctop openSUSE Leap 16.0 0.7.7-bp160.2.1
- cadvisor openSUSE Leap 16.0 0.60.3-bp160.1.1
- cadvisor openSUSE Tumbleweed 0.60.3-1.1
- apptainer openSUSE Tumbleweed 1.4.5-5.1
- govulncheck-vulndb openSUSE Tumbleweed 0.0.20250807T150727-1.1
- runc openSUSE Tumbleweed 1.2.0~rc3-1.1
opensuse advisories openSUSE-SU-2026:21379-1openSUSE-SU-2026:21265-1openSUSE-SU-2026:11153-1openSUSE-SU-2026:10842-1openSUSE-SU-2025:15424-1openSUSE-SU-2024:14312-1
- runc Alpine 3.24, Alpine 3.23, Alpine 3.22 +2 more 1.1.14-r0
alpine advisories ALPINE-CVE-2024-45310
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- buildah Azure Linux 3.0 1.41.4-2
- podman Azure Linux 3.0 5.6.1-2
- runc Azure Linux 3.0 1.2.2-1
- moby-runc CBL-Mariner 2.0 1.1.9-8
azure linux advisories AZL-48519AZL-48531AZL-48543AZL-48590
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-45310 updated cvss 3.6
runc: runc can be tricked into creating empty files/directories on host
-
Red Hat Enterprise Linux 7 runc Red Hat Enterprise Linux 8 runc Red Hat Enterprise Linux 9 runc Red Hat OpenShift Container Platform 3.11 runc Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9affected: no fix available “Fix deferred”
-
Red Hat Ceph Storage 9 rhceph 1771399331fixed: vendor fix RHSA-2026:3406
-
Red Hat Openshift Data Foundation 4.22 odf4/cephcsi-rhel9 1782932114, odf4/odf-cli-rhel9 1783537001, odf4/mcg-core-rhel9 1783536000, odf4/odf-drbd-rhel9 1783537392, odf4/odf-console-rhel9 1783537586, odf4/devicefinder-rhel9 1782932104, +21 morefixed: vendor fix RHSA-2026:37387
-
Red Hat Ceph Storage 9 rhceph 1771398877, rhceph 1771399022, rhceph 1771399060, rhceph 1771399158, rhceph 1771816028 Red Hat Openshift Data Foundation 4.22 odf4/mcg-operator-bundle 1783538986, odf4/ocs-operator-bundle 1783539176, odf4/odf-operator-bundle 1783539513, odf4/cephcsi-operator-bundle 1783538908, odf4/odr-hub-operator-bundle 1783539596, odf4/rook-ceph-operator-bundle 1783539714, +10 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.32% chance of exploitation in the next 30 days, higher than 24% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 3.6 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N |
| GitHub | 3.1 | 3.6 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N |
| NVD | 3.1 | 3.6 | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/opencontainers/runc | <1.1.14 >=1.2.0-rc.1, <1.2.0-rc.3 |
1.1.14 1.2.0-rc.3 |
Affected products
- opencontainers runc
Classification
References
-
github.com
/opencontainers/runc/pull/4359
web, patch
-
github.com
/opencontainers/runc/commit/63c2908164f3a1daea455bf5bcd8d363d70328c7
web, patch
-
github.com
/opencontainers/runc/commit/8781993968fd964ac723ff5f360b6f259e809a3e
web, patch
-
github.com
/opencontainers/runc/commit/f0b652ea61ff6750a8fcc69865d45a7abf37accf
web, patch
-
github.com
/opencontainers/runc/security/advisories/GHSA-jfvp-7x6p-h2pv
web, patch, vendor-advisory, advisory
-
security.netapp.com
/advisory/ntap-20250221-0008/
vendor-advisory
-
openwall.com
/lists/oss-security/2024/09/03/1
web, mailing-list, mitigation, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2024-45310
advisory
-
github.com
/opencontainers/runc
package
-
security.netapp.com
/advisory/ntap-20250221-0008
web
Sources
- CVE List CVE-2024-45310
- GitHub Advisory GHSA-jfvp-7x6p-h2pv
- NVD CVE-2024-45310
- OSV GO-2024-3110
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.