CVE-2024-45310: Github.com/opencontainers/runc Runc Can Be Confused To Vulnerability
MODERATECVE-2024-45310 is a MODERATE (CVSS 3.6) runc can be confused to vulnerability (CWE-363: Race Condition Enabling Link Following) affecting Github.com/opencontainers/runc libraries in the Go ecosystem. The issue involves runc can be confused to create empty files/directories on the host. Remediation is available by upgrading affected packages to version 1.1.14, 1.2.0-rc.3.
CVE-2024-45310 at a Glance
Security Impact
CVSS: 3.6
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N).
How to Fix CVE-2024-45310
To remediate this vulnerability, upgrade all affected Github.com/opencontainers/runc dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/opencontainers/runc to 1.1.14
Upgrade github.com/opencontainers/runc to 1.2.0-rc.3
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/opencontainers/runc
How to Check if You Are Affected
To determine whether your application is affected by CVE-2024-45310, inspect your project dependencies for Github.com/opencontainers/runc:
inspect dependencies for github.com/opencontainers/runc
Analyze the terminal output to locate any version of Github.com/opencontainers/runc in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.1.14), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-363: Race Condition Enabling Link Following, where the product checks the status of a file or directory before accessing it, which produces a race condition in which the file can be replaced with a link before the access is performed, causing the product to access the wrong file. In Github.com/opencontainers/runc, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2024-45310 Affected Github.com/opencontainers/runc Versions
2 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/opencontainers/runc
|
Go |
< 1.1.14
|
1.1.14
|
|
github.com/opencontainers/runc
|
Go |
≥ 1.2.0-rc.1
< 1.2.0-rc.3
|
1.2.0-rc.3
|
References
Frequently Asked Questions
What is CVE-2024-45310?
Which Github.com/opencontainers/runc versions are affected?
What version fixes CVE-2024-45310?
Is github.com/opencontainers/runc affected?
What is the CVSS score of CVE-2024-45310?
What CWE is associated with CVE-2024-45310?
How can I check Go dependencies for CVE-2024-45310?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-jfvp-7x6p-h2pv",
"modified" : "2025-02-21T21:03:04Z",
"published" : "2024-09-03T19:49:32Z",
"aliases" : [ "CVE-2024-45310" ],
"summary" : "runc can be confused to create empty files/directories on the host",
"details" : "### Impact\nrunc 1.1.13 and earlier as well as 1.2.0-rc2 and earlier can be tricked into\ncreating empty files or directories in arbitrary locations in the host\nfilesystem by sharing a volume between two containers and exploiting a race\nwith os.MkdirAll. While this can be used to create empty files, existing\nfiles **will not** be truncated.\n\nAn attacker must have the ability to start containers using some kind of custom\nvolume configuration. Containers using user namespaces are still affected, but\nthe scope of places an attacker can create inodes can be significantly reduced.\nSufficiently strict LSM policies (SELinux/Apparmor) can also in principle block\nthis attack -- we suspect the industry standard SELinux policy may restrict\nthis attack's scope but the exact scope of protection hasn't been analysed.\n\nThis is exploitable using runc directly as well as through Docker and\nKubernetes.\n\nThe CVSS score for this vulnerability is\nCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N (Low severity, 3.6).\n\n### Workarounds\nUsing user namespaces restricts this attack fairly significantly such that the\nattacker can only create inodes in directories that the remapped root\nuser/group has write access to. Unless the root user is remapped to an actual\nuser on the host (such as with rootless containers that don't use\n/etc/sub[ug]id), this in practice means that an attacker would only be able to\ncreate inodes in world-writable directories.\n\nA strict enough SELinux or AppArmor policy could in principle also restrict the\nscope if a specific label is applied to the runc runtime, though we haven't\nthoroughly tested to what extent the standard existing policies block this\nattack nor what exact policies are needed to sufficiently restrict this attack.\n\n### Patches\nFixed in runc v1.1.14 and v1.2.0-rc3.\n\n* `main` patches:\n * https://github.com/opencontainers/runc/pull/4359\n * https://github.com/opencontainers/runc/commit/63c2908164f3a1daea455bf5bcd8d363d70328c7\n* `release-1.1` patches:\n * https://github.com/opencontainers/runc/commit/8781993968fd964ac723ff5f360b6f259e809a3e\n * https://github.com/opencontainers/runc/commit/f0b652ea61ff6750a8fcc69865d45a7abf37accf\n\n### Credits\nThanks to Rodrigo Campos Catelin (@rata) and Alban Crequy (@alban) from\nMicrosoft for discovering and reporting this vulnerability.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N"
}, {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N/U:Green"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/opencontainers/runc"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "1.1.14"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/opencontainers/runc"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "1.2.0-rc.1"
}, {
"fixed" : "1.2.0-rc.3"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/opencontainers/runc/security/advisories/GHSA-jfvp-7x6p-h2pv"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2024-45310"
}, {
"type" : "WEB",
"url" : "https://github.com/opencontainers/runc/pull/4359"
}, {
"type" : "WEB",
"url" : "https://github.com/opencontainers/runc/commit/63c2908164f3a1daea455bf5bcd8d363d70328c7"
}, {
"type" : "WEB",
"url" : "https://github.com/opencontainers/runc/commit/8781993968fd964ac723ff5f360b6f259e809a3e"
}, {
"type" : "WEB",
"url" : "https://github.com/opencontainers/runc/commit/f0b652ea61ff6750a8fcc69865d45a7abf37accf"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/opencontainers/runc"
}, {
"type" : "WEB",
"url" : "https://security.netapp.com/advisory/ntap-20250221-0008"
}, {
"type" : "WEB",
"url" : "http://www.openwall.com/lists/oss-security/2024/09/03/1"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-363", "CWE-61" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2024-09-03T19:49:32Z",
"nvd_published_at" : "2024-09-03T19:15:15Z"
}
}