8.2 KiB
Runtime image candidate audit — 8 September 2026
Release coordination: GovOPlaN #51. Canonical remediation: GovOPlaN #52. This follow-up to the source security/performance review records registry-only scans of nine proposed runtime dependencies and two same-minor patch candidates. Runtime publication is held: patch-only updates do not resolve the baseline. Source/package publication is a separate outcome. No images were executed, rebuilt, selected for CI, or published by this audit.
Method and reproducible evidence
Official Trivy 0.74.0 was installed only in a private local task directory, without sudo or Docker access. Its Linux-64bit release archive matched both the official checksums file and GitHub release asset metadata:
- Archive SHA256:
2ae6fe3ee734b7fdf11335663e18c75ea12dccc76062f09f164a3b0f8be4371a. - Checksums-file SHA256:
bc701c3c3ee8b9acbea2c23257e41381e3854888f51281616a6ba5dc96963821. - Vulnerability database schema 2, updated
2026-09-07T19:06:01.154199452Z, downloaded frommirror.gcr.io/aquasec/trivy-db:2. - Scan flags:
--image-src remote --platform linux/amd64 --scanners vuln --format json --no-progress --timeout 8m --max-image-size 2GB --exit-code 0. Findings were counted from validated JSON; exit zero did not mean clean. - Existing Docker credentials were not read; no private keys or secrets were used. Checksums over official HTTPS metadata were verified, not independent Sigstore signatures. See the official release and registry-only scan documentation.
Raw evidence is retained locally, not committed:
/home/zemion/.cache/govoplan-trivy-remote.yKZgjDOg/scan/.
It contains eleven reports/*-amd64.json reports/logs, scanner scripts,
patch-candidate-inspection.json, exact successor registry indices, and
evidence-checksums.json. Summary SHA256 values:
summary.json:f2785a731d637452ab9c0b1f5399772c0f8828a63ca83d5fa7496abdad1c757a.patch-summary.json:b3fc6273fcdad98864040ccdf3477ecf379afd46e9f94444b1f2910f48c1d85b.
All eleven executions succeeded without timeout/rate-limit failure. Initial
summary fields distinguish scan_execution_complete: true from
coverage_complete: false: Garage has no detectable package inventory.
Checksums preserve evidence identity, not indefinite storage availability.
Exact requested pins and results
All references below use docker.io/. Counts are package-vulnerability records,
not distinct CVEs or confirmed exploitable application defects. A vulnerability
can appear against several installed packages. Unfixed/unknown records remain.
| Image tag | Exact index SHA256 | Critical / High / Medium / Low / Unknown | Fixable C/H |
|---|---|---|---|
library/python:3.12-slim-bookworm |
782412e85d0f0984994c290652577d4018aff08145c85b262bb63dc0c7522254 |
5 / 55 / 102 / 103 / 5 | 0 |
library/postgres:16-alpine |
cf78e76683b9ca8c5733cbbdce6c9262b45b6767934dd0a95e671f9a0fc20685 |
1 / 30 / 28 / 14 / 1 | 31 |
library/redis:7-alpine |
ff02b58f971e7d7d156a1267e283fcbbeee91773b6aa36c49dac28ecfe28eadf |
0 / 0 / 0 / 0 / 0 | 0 |
nginxinc/nginx-unprivileged:1.29-alpine |
0c79d56aee561a1d81c63f00eee5fb5fe29279560cdc55e91425133104c7fbe6 |
0 / 33 / 74 / 37 / 20 | 33 |
library/haproxy:3.2.21-alpine |
66e25cc9a8332635f4e897f7f4b1e5622c25f09f0ee23cddc6ce9bdb3a24772a |
0 / 2 / 6 / 12 / 0 | 2 |
library/caddy:2.10.2-alpine |
4c6e91c6ed0e2fa03efd5b44747b625fec79bc9cd06ac5235a779726618e530d |
7 / 75 / 67 / 37 / 4 | 82 |
dxflrs/garage:v2.3.0 |
866bd13ed2038ba7e7190e840482bc27234c4afaf77be8cfa439ae088c1e4690 |
Unknown: no inventory | — |
greenmail/standalone:2.1.9 |
3ac5a83dd6727cf95e4d50e18907fb8ee7bbf5f67e8534714dee2fb1b5b2e1d4 |
0 / 0 / 116 / 35 / 0 | 0 |
tonistiigi/binfmt:qemu-v10.2.3-68 |
400a4873b838d1b89194d982c45e5fb3cda4593fbfd7e08a02e76b03b21166f0 |
0 / 9 / 2 / 1 / 1 | 9 |
Patch-only options and limits
Complete publisher tag listings were inspected for nginx 1.29, Caddy 2.10, HAProxy 3.2, GreenMail 2.1 and binfmt qemu10.2. Two newer candidates were scanned; their registry index bytes matched both registry and publisher digests, and contained amd64 and arm64 manifests:
library/haproxy:3.2.23-alpine@sha256:6343ce34a132a5dceaa24767d739df2bd519f8f7c1079ae39e4821334e8eb42e: same Alpine 3.24.1, 24 detected OS packages, zero reported findings. This is a useful candidate, not a completed compatibility test or application audit.greenmail/standalone:2.1.13@sha256:3df66b7edd01c8a301343ca5e3601d8674760d4708655573560c24745e624fb2: upstream changes Ubuntu 22.04 to Debian 13.6; 3 C / 80 H / 98 M / 85 L / 5 unknown, 30 fixable C/H records. Not selected as a no-base-change update.- nginx's newest matching Alpine patch is already 1.29.8 at the scanned pin; Caddy 2.10 remains 2.10.2; binfmt qemu10.2 remains 10.2.3-68. No newer matching publisher images were found. The current official Caddy image catalogue uses 2.11.4; switching minor lines requires new scans and compatibility checks.
Priority remediation: Caddy's own seven HIGH records require fixes through 2.11.4, with additional bundled Go/library fixes that must be re-scanned; nginx's packages include curl/libcurl fixes through 8.22.0-r0, OpenSSL 3.5.8-r0, c-ares 1.34.8-r0, expat 2.8.1-r0 and libuuid 2.41.6-r1. PostgreSQL's OS records require OpenSSL 3.5.8-r0 and libuuid 2.42.3-r1; its CRITICAL plus 21 HIGH Go records concern the gosu helper, not PostgreSQL server code. binfmt's nine HIGH records concern its Go 1.26.4 build, with fixes through 1.26.6. Package presence does not establish vulnerable-symbol reachability. No unscanned tag is claimed to meet every fix requirement.
Python triage and coverage caveats
Python image metadata identifies CPython 3.12.14, but Trivy inventories only
Debian packages and pip, not CPython/stdlib. All 60 C/H records concern
Debian packages: 21 CVEs, 50 affected records, 9 fix_deferred, 1
will_not_fix, without a recorded fixed Bookworm version. Five util-linux CVEs
repeat across eight binary packages. These remain installed; they are not all
removed build dependencies. Pip 25.0.1 separately has five MEDIUM/one LOW
records, with fixes through 26.2.0; it is install tooling, and the API image uses
an offline --no-index wheelhouse rather than an arbitrary package index.
Narrow triage examples, not blanket exemptions:
- Debian states CVE-2023-45853 does not affect the built Bookworm zlib binaries because vulnerable minizip code is not included. Other bundled minizip implementations are separate.
- CVE-2026-8376 explicitly requires 32-bit Perl; this scan targets amd64.
- CVE-2025-7458 requires crafted arbitrary SQLite SQL; the managed runtime uses PostgreSQL, but alternate SQLite use must be reviewed.
- Perl's regex and Archive::Tar records need exact binary/module applicability checks; vendor-deferred status alone is not a finding dismissal.
Only amd64 was scanned. arm64, newly built GovOPlaN API/Web layers and optional dependency combinations remain unverified. Garage has no inventory; Redis, HAProxy and PostgreSQL source-built executables, CPython and QEMU static binaries need supplemental SBOM/source coverage. Zero detected OS findings is not zero application vulnerabilities. Trivy also lacks Alpine 3.24 EOL metadata and nginx CVE-2026-80256 detail; unknowns are retained. There were no runtime, exploitability, secret, misconfiguration, malware or signature-policy checks.
Before lifting the runtime hold: approve and test maintained image-line changes
where necessary, fix or narrowly disposition findings with evidence, close
inventory gaps, scan both architectures and final runtime layers, then run
deployment/ingress smoke checks. Do not silently change base OS, use unpinned
latest, rebuild third-party images, or accept all HIGH/CRITICAL findings.