@actions/download-artifact has an Arbitrary File Write via artifact extractionGHSA-cxww-7g56-2vh6
HIGHGHSA-cxww-7g56-2vh6 is a high-severity (CVSS 7.3) vulnerability in actions/download-artifact. A fix is available for actions/download-artifact — see the affected versions and patch details below.
Real-World Exposure
actions/download-artifactReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects GitHub Actions packages — download data is not available via public APIs for these ecosystems.
Description
Impact
Versions of actions/download-artifact before 4.1.3 are vulnerable to arbitrary file write when downloading and extracting a specifically crafted artifact that contains path traversal filenames.
Patches
Upgrade to version 4.1.3 or higher. Alternatively use 'v4' tag which points to the latest and secure version.
References
- https://snyk.io/research/zip-slip-vulnerability
- https://github.com/actions/download-artifact/releases/tag/v4.1.3
- https://github.com/actions/download-artifact/pull/299
CVE
CVE-2024-42471
Credits
Justin Taft from Google
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦GitHub Actions | actions/download-artifact | ≥ 4.0.0&&< 4.1.3 | 4.1.3 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for actions/download-artifact, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update actions/download-artifact to 4.1.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-cxww-7g56-2vh6 is resolved across your whole dependency graph.
Workarounds
Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
Frequently Asked Questions
Is GHSA-cxww-7g56-2vh6 in your dependencies?
Find it across GitHub Actions, including transitive dependencies.