Skip to content

[HUM-147] Suppress 3 unfixed docker cp/archive CVEs in govulncheck allow-list - #47

Merged
devpg merged 1 commit into
mainfrom
chore-suppress-docker-cp-cves
Jun 27, 2026
Merged

[HUM-147] Suppress 3 unfixed docker cp/archive CVEs in govulncheck allow-list#47
devpg merged 1 commit into
mainfrom
chore-suppress-docker-cp-cves

Conversation

@devpg

@devpg devpg commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

What

Adds three unfixed github.com/docker/docker CVEs to the SUPPRESSED allow-list in scripts/govulncheck.sh, so the make sec govulncheck gate passes again. Each carries a per-ID justification.

Why

These are freshly-disclosed, unfixed upstream (Fixed in: N/A) — make upgrade-deps is a no-op (deps already current; docker/docker v28.5.2 is latest), so there is no version to move to. govulncheck can't do symbol-level reachability for the +incompatible docker module, so it flags on import alone.

Per-CVE rationale (honest, differentiated)

CVE Disposition
GO-2026-5668docker cp symlink-swap race → arbitrary empty host file Unreachablehuman only streams a tar into containers via CopyToContainer; never copies out to a host path, never uses the docker cp CLI
GO-2026-5617docker cp race → bind-mount redirection to host path Unreachable — same copy-OUT path; human does no container→host copy
GO-2026-5746PUT /containers/{id}/archive executes container binary on host Reachable, accepted residual riskhuman uses CopyToContainer (internal/devcontainer/feature.go) to install devcontainer features. Exploit needs a malicious base image; operator-declared devcontainer.json images + the daemon's existing host-Docker access already place a hostile image outside the trust boundary. Documented as residual risk, not a false "unreachable" claim.

Reviewer note

The only judgment call is suppressing GO-2026-5746 (residual-risk acceptance vs. leaving the gate red until an upstream fix, or hardening the feature-install path). The other two are genuinely unreachable. Re-evaluate the whole allow-list when Moby ships a fix (review date already in the script).

Verification

  • make sec → "OK: no vulnerabilities outside the suppression list"
  • bash -n scripts/govulncheck.sh clean

🤖 Generated with Claude Code

…low-list

govulncheck gates `make sec` and now flags three unfixed github.com/docker/docker
findings (Fixed in: N/A, no version bump resolves them). It cannot do symbol-level
reachability for the +incompatible docker module, so it flags on import alone.

- GO-2026-5668 / GO-2026-5617 (docker cp host-side races): unreachable — human only
  streams a tar INTO containers via CopyToContainer, never copies content out to a
  host path and never uses the `docker cp` CLI.
- GO-2026-5746 (PUT /containers/{id}/archive executes a container binary on the host):
  reachable (CopyToContainer is used in internal/devcontainer/feature.go), but the
  exploit needs a malicious base image; operator-declared images plus the daemon's
  existing host Docker access put a hostile image outside the trust boundary already.
  Documented as an explicit residual-risk acceptance, not a "not reachable" claim.

Each ID carries a per-finding justification and the existing review-date reminder.
@devpg
devpg merged commit c55f904 into main Jun 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant