
Container nginx 1.25.5 costruito da sorgente con fix backportato per CVE-2026-42945, aggiornamento di OpenSSL, catena di provenienza completa e attestazione VEX.
nginx:1.25-bookwormUn'immagine contenitore nginx 1.25.5 compilata da fonte che corregge due CVE presenti nell'immagine ufficiale nginx:1.25-bookworm mantenendo il comportamento runtime a monte.
| CVE | Componente | Gravità | Tecnica | Modello di verifica |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | Alta | Aggiornamento versione dipendenza | Verificabile dallo scanner: libssl3 3.0.20 visibile nel database dpkg |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | Critica | Patch fonte backportata | Verificabile dalla provenienza: derivazione patch + test di regressione + attestazione build + VEX |
Queste rappresentano due modelli di correzione distinti:
Gli argomenti di configurazione nginx -V di questa immagine corrispondono a quelli di nginx:1.25-bookworm (confrontati carattere per carattere dopo aver normalizzato il percorso di build -ffile-prefix-map; verificato in test/compat.py::test_nginx_version). La suite di test (make test) convalida 89 affermazioni che coprono metadati dell'immagine, moduli dinamici, layout del filesystem, comportamento dell'entrypoint, packaging dpkg e gestione delle richieste HTTP rispetto all'immagine a monte in esecuzione.
Differenze note rispetto a monte (non validate come identiche):
built with OpenSSL X.X.X in nginx -V riflette la versione libssl-dev del builder, che potrebbe differire dalla OpenSSL a tempo di compilazione di monte.debian:bookworm-slim anziché l'albero di pacchetti ereditato dall'immagine ufficiale.libssl3 è quella attualmente fornita da bookworm (3.0.20 al momento della scrittura), non la versione bloccata nell'immagine a monte.make image
make test
make test-cve
make verify-patch
make scan
Un comando per compilare, testare e scansionare:```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)
## Processo di Build
### Architettura```
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/
Il Containerfile NON copia /etc/nginx da upstream. Tutti i file di configurazione
sono distribuiti all'interno del .deb e tracciati dal meccanismo conffile di dpkg.
Questo è necessario per lo script di entrypoint 10-listen-on-ipv6-by-default.sh,
che utilizza dpkg-query per rilevare se default.conf è stato modificato dall'utente.
./configure && make all'interno di un container Debian pulito.
Nessun binario upstream, nessun apt install nginx.build.sh recupera solo gli archivi sorgente bloccati.La build è per lo più riproducibile ma non ermetica:
Dockerfile.build ma non bloccate per versione.Per migliorare la riproducibilità, blocca il digest dell'immagine base:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'
---
## Dettagli sulla Correzione delle CVE
### CVE-2024-6119 - Aggiornamento della Versione di OpenSSL
| Campo | Valore |
| -------------------- | ---------------------------------------------------- |
| **Componente** | OpenSSL / libssl3 |
| **Gravità** | Alta (CVSS 7.5) |
| **Tipo** | Denial of Service tramite controlli del nome X.509 |
| **Versione di base** | 3.0.11-1~deb12u2 |
| **Versione corretta** | 3.0.14-1~deb12u2 (o successiva) |
| **Nostra versione** | 3.0.20-1~deb12u1 |
| **NVD** | https://nvd.nist.gov/vuln/detail/CVE-2024-6119 |
| **Avviso** | https://openssl-library.org/news/secadv/20240903.txt |
**Come funziona la correzione:**