
Quellgebauter nginx 1.25.5 Container mit zurückportiertem CVE-2026-42945 Fix, OpenSSL-Update, vollständiger Provenienzkette und VEX-Attestierung.
nginx:1.25-bookwormEin aus dem Quellcode erstelltes nginx 1.25.5 Container-Image, das zwei CVE-Korrekturen aus dem offiziellen nginx:1.25-bookworm-Image behebt, während das Upstream-Laufzeitverhalten erhalten bleibt.
| CVE | Komponente | Schweregrad | Technik | Verifikationsmodell |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | Hoch | Versionsanhebung | Scanner-verifizierbar: libssl3 3.0.20 sichtbar in der dpkg-Datenbank |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | Kritisch | Quellcode-Backport | Herkunftsverifizierbar: Patch-Ableitung + Regressionstest + Build-Attestation + VEX |
Diese repräsentieren zwei unterschiedliche Behebungsmodelle:
Die nginx -V-Konfigurationsargumente dieses Images stimmen mit denen von
nginx:1.25-bookworm überein (verglichen Zeichen für Zeichen nach Normalisierung des
Build-Pfades -ffile-prefix-map; verifiziert in test/compat.py::test_nginx_version).
Die Testsuite (make test) validiert 89 Assertions, die Imagemetadaten,
dynamische Module, Dateisystemlayout, Entrypoint-Verhalten, dpkg-Paketierung und
HTTP-Anfragebearbeitung gegenüber dem Live-Upstream-Image abdecken.
Bekannte Unterschiede zum Upstream (nicht als identisch validiert):
built with OpenSSL X.X.X in nginx -V spiegelt die libssl-dev-Version des
Builders wider, die sich vom compile-time OpenSSL des Upstreams unterscheiden kann.debian:bookworm-slim Basis anstelle des vom
offiziellen Image geerbten Paketbaums.libssl3 ist die, die bookworm derzeit bietet (3.0.20 zum
Zeitpunkt des Schreibens), nicht die festgelegte Version im Upstream-Image.make image
make test
make test-cve
make verify-patch
make scan
Ein Befehl zum Erstellen, Testen und Scannen:```bash
make all
build/ Dockerfile.build Builder image (debian:bookworm-slim + compilation deps) build.sh Fetch → verify → patch → compile → package nginx generate-vex.sh Generate OpenVEX document for backported CVE verify-patch.sh Re-derive patch from upstream tarballs (audit tool) patches/ CVE-2026-42945.patch Backported one-line fix from nginx 1.30.1 CVE-2026-42945.provenance.json Machine-readable patch provenance and derivation metadata
test/ compat.py 89-assertion compatibility test suite (runs against live upstream) test_cve_2026_42945.py CVE-specific regression test (exercises vulnerable code path)
artifacts/
patch-attestation.json Build-time patch attestation (tracked)
nginx_*.deb Compiled package (gitignored - rebuilt via make build-source)
nginx Compiled binary (gitignored)
Containerfile Final runtime image definition
Makefile Orchestrates build → test → scan pipeline
vex.json Generated OpenVEX v0.2.0 document
baseline-trivy.txt Point-in-time Trivy scan of nginx:1.25-bookworm
baseline-grype.txt Point-in-time Grype scan of nginx:1.25-bookworm
fixed-trivy.txt Trivy scan of the fixed image
fixed-grype.txt Grype scan of the fixed image (without VEX)
fixed-grype-vex.txt Grype scan of the fixed image (with VEX applied)
## Build-Prozess
### Architektur```
debian:bookworm-slim (builder)
└─ build.sh
├─ curl nginx-1.25.5.tar.gz (SHA256-verified)
├─ curl njs-0.8.4 from github.com/nginx/njs
├─ patch -p1 < CVE-2026-42945.patch
├─ ./configure (flags identical to upstream nginx -V)
├─ make: release binary, debug binary, 4 dynamic module families (×2 release/debug)
├─ make: NJS modules (×2 release/debug) + njs CLI binary
└─ dpkg-deb → nginx_1.25.5-1~bookworm+echo1_<arch>.deb
debian:bookworm-slim (runtime)
├─ apt-get install runtime deps (libssl3 ≥ 3.0.14 enforced)
├─ dpkg -i nginx_*.deb
└─ COPY --from=upstream /docker-entrypoint.sh + /docker-entrypoint.d/
Das Containerfile kopiert /etc/nginx NICHT von upstream. Alle Konfigurationsdateien werden innerhalb des .deb ausgeliefert und vom Conffile-Mechanismus von dpkg verfolgt. Dies ist erforderlich für das Einstiegspunkt-Skript 10-listen-on-ipv6-by-default.sh, das dpkg-query verwendet, um zu erkennen, ob default.conf vom Benutzer geändert wurde.
./configure && make in einem sauberen Debian-Container. Keine Upstream-Binärdateien, kein apt install nginx.build.sh ruft nur festgelegte Quellarchive ab.Der Build ist größtenteils reproduzierbar, aber nicht hermetisch:
Dockerfile.build aufgelistet, aber nicht versioniert festgelegt.Um die Reproduzierbarkeit zu verbessern, fixieren Sie den Digest des Basis-Images:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'
---
## Details zur CVE-Behebung
### CVE-2024-6119 - OpenSSL-Versionssprung
| Feld | Wert |
| -------------------- | ---------------------------------------------------- |
| **Komponente** | OpenSSL / libssl3 |
| **Schweregrad** | Hoch (CVSS 7.5) |
| **Typ** | Denial-of-Service durch X.509-Namensprüfungen |
| **Basisversion** | 3.0.11-1~deb12u2 |
| **Behobene Version** | 3.0.14-1~deb12u2 (oder später) |
| **Unsere Version** | 3.0.20-1~deb12u1 |
| **NVD** | https://nvd.nist.gov/vuln/detail/CVE-2024-6119 |
| **Advisory** | https://openssl-library.org/news/secadv/20240903.txt |
**Wie der Fix funktioniert:**