CVE-2026-17106: Tar extraction in moby/go-archive can write outside the destination directory via link following
Advisory generated from the CVE record, CISA, Exploit Observer and VEDAS: what it is, whether it is exploited, who is affected, and how to fix and detect it.
Generated by VEDAS. Scores as of 2026-11-08 00:03 UTC. Rebuilt every few hours from cve-scores, CISA KEV and vedas-signatures. How this works and its limits.
What it is
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. 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 links introduced by the archive can be followed out of the destination directory. An attacker who controls the contents of an archive can create or overwrite files at arbitrary paths writable by the extracting process.
Description quoted from the CVE record (assigned by Docker, published 2026-08-18).
Weakness: CWE-59: Improper Link Resolution Before File Access (‘Link Following’)
How it can be exploited
Exploitable with local access with low attack complexity only when specific conditions are present needing no privileges and a user must actively take an action. Impact: confidentiality high, integrity high, availability high. CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CISA assessment (SSVC): CISA assesses that a public proof of concept exists. Automatable: no. Technical impact: total.
Public exploit evidence (Exploit Observer)
Exploit Observer found 2 code repositories naming this CVE.
Code repositories that name a CVE are often scanners, copies or fakes, and some are malware. Read the code before running anything.
See all 13 references on Exploit Observer
Live scores
- EPSS
- 0.004
low predicted chance of attack - VEDAS
- 0.048
little exploit evidence - On CISA KEV
- Not listed
- Detection rule
- No public rule yet
Who is affected
| Product | Affected | Not affected |
|---|---|---|
| moby go-archive (github.com/moby/go-archive) | before 0.3.0 | Not stated |
| Docker Sandboxes | before 0.38.0 | Not stated |
| Docker Desktop | before 4.86.0 | Not stated |
| Docker Engine | before 29.7.0 | Not stated |
| Docker CLI | before 29.7.0 | Not stated |
| Docker Compose | before 5.4.0 | Not stated |
Version ranges exactly as the CVE record states them. “Before X” means X is the first fixed version.
How to fix it
Fixed versions stated in the CVE record: 0.3.0, 0.38.0, 4.86.0, 29.7.0, 5.4.0.
Vendor guidance:
- https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h (vendor-advisory)
- https://docs.docker.com/desktop/release-notes/#4860 (release-notes)
- https://github.com/docker/sbx-releases/releases/tag/v0.38.0 (release-notes)
- https://docs.docker.com/engine/release-notes/29/#2970 (release-notes)
- https://github.com/docker/cli/releases/tag/v29.7.0 (release-notes)
- https://github.com/docker/compose/releases/tag/v5.4.0 (release-notes)
- https://github.com/moby/go-archive/releases/tag/v0.3.0 (patch)
How to detect it
There is no open VEDAS detection rule for this bug yet. It is listed on the detection gaps page if CISA has confirmed attacks.
Advisories on this CVE
References
Vendor advisories and patches
- https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h (vendor-advisory)
- https://docs.docker.com/desktop/release-notes/#4860 (release-notes)
- https://github.com/docker/sbx-releases/releases/tag/v0.38.0 (release-notes)
- https://docs.docker.com/engine/release-notes/29/#2970 (release-notes)
- https://github.com/docker/cli/releases/tag/v29.7.0 (release-notes)
- https://github.com/docker/compose/releases/tag/v5.4.0 (release-notes)
- https://github.com/moby/go-archive/releases/tag/v0.3.0 (patch)
Exploit code
Other databases
Where this comes from
This advisory is generated automatically by VEDAS from: CVE.org record, cve-scores (EPSS and VEDAS), Exploit Observer. Text in quotes is reproduced from the source; everything else is a fixed template filled with source fields. Nothing here is written by a language model. Check the vendor advisory before acting, and read how VEDAS and Exploit Observer work, and their limits.