fix(container): cut image vulnerabilities with x dep bumps and base image refresh - #394
Merged
Merged
Conversation
Clears the x/crypto, x/net, x/sys and x/text vulnerability findings reported against the pmg binary by image scanners. Deliberately kept back: the go directive stays 1.25.1 because the Go 1.26 move is blocked on goproxy URL parsing (see #390), and grpc stays pinned at v1.81.0 due to the trailers regression with v1.82.x.
The bullseye runtime base and the stale golang:1.25-bookworm digest (go1.25.5) accounted for most of the vulnerability findings in the published image. debian:13-slim is current stable and the refreshed golang digest carries go1.25.12, covering every flagged stdlib CVE.
SafeDep Report SummaryPackage Details
This report is generated by SafeDep Github App |
vet Summary ReportThis report is generated by vet Policy Checks
Malicious Package AnalysisMalicious package analysis was performed using SafeDep Cloud API Malicious Package Analysis Report
Changed PackagesChanged Packages
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #394 +/- ##
=======================================
Coverage 58.64% 58.64%
=======================================
Files 222 222
Lines 15276 15276
=======================================
Hits 8958 8958
Misses 5503 5503
Partials 815 815 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
abhisek
approved these changes
Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Context
A user integrating
ghcr.io/safedep/pmg:latestinto their Dockerfile reported a Grype scan with 23 critical, 112 high and 124 medium findings (370 total). Root causes:debian:11-slim(bullseye), digest pinned since May 2025. Bullseye is out of standard security support and ships EOL components (OpenSSL 1.1.1, Perl 5.32). 270 of the 370 findings came from these OS packages.golang:1.25-bookwormbuilder digest was stale and carried go1.25.5, seven patch releases behind: 61 findings against the Go stdlib embedded in the binary.golang.org/xmodules were behind (x/crypto v0.49.0, x/net v0.51.0): 37 findings.Changes
golang.org/x/cryptoto v0.54.0,x/netto v0.57.0,x/systo v0.47.0,x/textto v0.40.0 (x/mod, x/sync, x/term follow via MVS). All of these run on the Go 1.25 line.debian:13-slim(current stable) with a fresh digest pin.golang:1.25-bookwormdigest pin. The current digest carries go1.25.12, which includes every stdlib CVE fix flagged in the scan.Deliberately unchanged, see #390:
godirective stays 1.25.1. The 1.26 move is blocked on goproxy (Fix unexpected scheme edge case in MITM elazarl/goproxy#793): Go 1.26net/urlrejects the malformed absolute-form URLs goproxy reconstructs during MITM. Keeping the directive on 1.25 sidesteps the behavior change entirely, since GODEBUG defaults follow the main module directive.grpcstays pinned at v1.81.0 due to the analyzer trailers regression with v1.82.x; the upstream fix (transport: surface data when received non-grpc header, end stream without trailers grpc/grpc-go#9217) is milestoned for 1.84. This leaves one known High (GHSA-hrxh-6v49-42gf) in the image.Results
Grype on the image built from this branch: 370 findings drop to 165 (criticals 23 to 7, highs 112 to 20). The pmg binary itself: 100 findings drop to 1 (the pinned grpc High). Every remaining OS finding is wont-fix or not-fixed triage by Debian in essential trixie packages (perl-base, glibc, ncurses); no package upgrade clears them.
Verified locally:
go build ./..., fullgo test ./...(proxy e2e suite green; one pre-existing Seatbelt golden failure reproduces identically on a clean tree),docker build,pmg versioninside the built image, and Grype scans of both the binary and the image.🤖 Generated with Claude Code