CVE-2024-24557: Github.com/docker/docker Classic Builder Cache Poisoning Vulnerability
MODERATECVE-2024-24557 is a MODERATE (CVSS 6.9) classic builder cache poisoning vulnerability (CWE-345: Insufficient Verification of Data Authenticity) affecting Github.com/docker/docker libraries in the Go ecosystem. The issue involves classic builder cache poisoning. Remediation is available by upgrading affected packages to version 24.0.9, 25.0.2.
CVE-2024-24557 at a Glance
Security Impact
CVSS: 6.9
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:L/I:H/A:L).
How to Fix CVE-2024-24557
To remediate this vulnerability, upgrade all affected Github.com/docker/docker 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/docker/docker to 24.0.9
Upgrade github.com/moby/moby to 24.0.9
Upgrade github.com/moby/moby to 25.0.2
Upgrade github.com/docker/docker to 25.0.2
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/docker/docker
How to Check if You Are Affected
To determine whether your application is affected by CVE-2024-24557, inspect your project dependencies for Github.com/docker/docker:
inspect dependencies for github.com/docker/docker
Analyze the terminal output to locate any version of Github.com/docker/docker in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 24.0.9), 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-345: Insufficient Verification of Data Authenticity, where the product does not sufficiently verify the origin or authenticity of data, in a way that causes it to accept invalid data. In Github.com/docker/docker, 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-24557 Affected Github.com/docker/docker Versions
4 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/docker/docker
|
Go |
< 24.0.9
|
24.0.9
|
|
github.com/moby/moby
|
Go |
< 24.0.9
|
24.0.9
|
|
github.com/moby/moby
|
Go |
≥ 25.0.0
< 25.0.2
|
25.0.2
|
|
github.com/docker/docker
|
Go |
≥ 25.0.0
< 25.0.2
|
25.0.2
|
References
Frequently Asked Questions
What is CVE-2024-24557?
Which Github.com/docker/docker versions are affected?
What version fixes CVE-2024-24557?
Is github.com/docker/docker affected?
Is github.com/moby/moby affected?
What is the CVSS score of CVE-2024-24557?
What CWE is associated with CVE-2024-24557?
How can I check Go dependencies for CVE-2024-24557?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-xw73-rw38-6vjc",
"modified" : "2024-07-05T18:59:04Z",
"published" : "2024-02-01T20:51:19Z",
"aliases" : [ "CVE-2024-24557" ],
"summary" : "Classic builder cache poisoning",
"details" : "The classic builder cache system is prone to cache poisoning if the image is built `FROM scratch`.\nAlso, changes to some instructions (most important being `HEALTHCHECK` and `ONBUILD`) would not cause a cache miss.\n\n\nAn attacker with the knowledge of the Dockerfile someone is using could poison their cache by making them pull a specially crafted image that would be considered as a valid cache candidate for some build steps.\n\nFor example, an attacker could create an image that is considered as a valid cache candidate for:\n```\nFROM scratch\nMAINTAINER Pawel\n```\n\nwhen in fact the malicious image used as a cache would be an image built from a different Dockerfile.\n\nIn the second case, the attacker could for example substitute a different `HEALTCHECK` command.\n\n\n### Impact\n\n23.0+ users are only affected if they explicitly opted out of Buildkit (`DOCKER_BUILDKIT=0` environment variable) or are using the `/build` API endpoint (which uses the classic builder by default).\n\nAll users on versions older than 23.0 could be impacted. An example could be a CI with a shared cache, or just a regular Docker user pulling a malicious image due to misspelling/typosquatting.\n\nImage build API endpoint (`/build`) and `ImageBuild` function from `github.com/docker/docker/client` is also affected as it the uses classic builder by default. \n\n\n### Patches\n\nPatches are included in Moby releases:\n\n- v25.0.2\n- v24.0.9\n- v23.0.10\n\n### Workarounds\n\n- Use `--no-cache` or use Buildkit if possible (`DOCKER_BUILDKIT=1`, it's default on 23.0+ assuming that the buildx plugin is installed).\n- Use `Version = types.BuilderBuildKit` or `NoCache = true` in `ImageBuildOptions` for `ImageBuild` call.\n\n",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:C/C:L/I:H/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/docker/docker"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "24.0.9"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/moby/moby"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "24.0.9"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/moby/moby"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "25.0.0"
}, {
"fixed" : "25.0.2"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/docker/docker"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "25.0.0"
}, {
"fixed" : "25.0.2"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/moby/moby/security/advisories/GHSA-xw73-rw38-6vjc"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2024-24557"
}, {
"type" : "WEB",
"url" : "https://github.com/moby/moby/commit/3e230cfdcc989dc524882f6579f9e0dac77400ae"
}, {
"type" : "WEB",
"url" : "https://github.com/moby/moby/commit/fca702de7f71362c8d103073c7e4a1d0a467fadd"
}, {
"type" : "WEB",
"url" : "https://github.com/moby/moby/commit/fce6e0ca9bc000888de3daa157af14fa41fcd0ff"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/moby/moby"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-345", "CWE-346" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2024-02-01T20:51:19Z",
"nvd_published_at" : "2024-02-01T17:15:10Z"
}
}