Summary
moby/go-archive: Crafted tar archive can write outside the extraction directory
Advisory details
Summary
The tar extraction routines in moby/go-archive (Unpack, UnpackLayer, Untar/UntarUncompressed, and the ApplyLayer helpers) do not confine filesystem operations to the destination directory. A crafted archive can create or overwrite files outside the intended destination.
Details
The extractor decides where each archive entry lands using lexical string checks and then performs the filesystem operation on a path that is resolved by the OS, so a links introduced by the archive can be followed out of the destination directory.
Impact
An attacker who controls the contents of archive can create or overwrite files at arbitrary paths writable by the extracting process.
Workarounds
Only extract trusted archives.
References
- https://github.com/advisories/GHSA-hfg8-hc9c-6c3h
- https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h
- https://github.com/moby/moby/issues/52948
- https://docs.docker.com/desktop/release-notes/#4860
- https://github.com/bikini/exploitarium/tree/main/docker-cp-copyout-destination-escape
- https://github.com/docker/cli/releases/tag/v29.7.0
- https://github.com/moby/moby/releases/tag/docker-v29.7.0
- https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp
Related vulnerabilities
All Supply chain →- HIGHCVE-2026-75914
CodeWhale: image_analyze follows workspace symlinks, leaking external file bytes
- HIGHCVE-2026-81726
NLTK: Model-artifact APIs bypass pathsec and touch files outside allowed roots
- HIGHGHSA-2rx9-3g3h-c2jv
pnpm: pacquet trust-lockfile install can create dependency symlinks outside the project
- MEDIUMCVE-2026-55569
Aqua's archive extraction follows attacker-planted symlinks, allowing writes outside the install directory
- MEDIUMCVE-2026-53766
chrome-devtools-mcp: validatePath() does not canonicalize symlinks before enforcing roots
- HIGHCVE-2026-71476
Nx: Zip-Slip in the self-hosted remote cache