
Container nginx 1.25.5 construído a partir da fonte com correção retroportada do CVE-2026-42945, atualização do OpenSSL, cadeia de proveniência completa e atestado VEX.
nginx:1.25-bookwormUma imagem de contêiner nginx 1.25.5 compilada a partir do código fonte que corrige duas CVEs presentes na
imagem oficial nginx:1.25-bookworm, preservando o comportamento de tempo de execução upstream.
| CVE | Componente | Severidade | Técnica | Modelo de verificação |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | Alta | Aumento de versão de dependência | Verificável por scanner: libssl3 3.0.20 visível no banco de dados dpkg |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | Crítica | Patch de código fonte retroportado | Verificável por proveniência: derivação do patch + teste de regressão + atestado de compilação + VEX |
Estes representam dois modelos distintos de correção:
Os argumentos de configuração nginx -V desta imagem correspondem aos de
nginx:1.25-bookworm (comparados caractere por caractere após normalizar o
caminho de compilação -ffile-prefix-map; verificado em test/compat.py::test_nginx_version).
O conjunto de testes (make test) valida 89 asserções cobrindo metadados da imagem,
módulos dinâmicos, layout do sistema de arquivos, comportamento do entrypoint, empacotamento dpkg e
tratamento de requisições HTTP contra a imagem upstream ativa.
Diferenças conhecidas em relação ao upstream (não validadas como idênticas):
built with OpenSSL X.X.X em nginx -V reflete a versão do libssl-dev do compilador,
que pode diferir do OpenSSL em tempo de compilação do upstream.debian:bookworm-slim em vez da
árvore de pacotes herdada da imagem oficial.libssl3 em tempo de execução é o que o bookworm atualmente fornece (3.0.20
no momento da escrita), não a versão fixada na imagem upstream.make image
make test
make test-cve
make verify-patch
make scan
Um comando para construir, testar e escanear:```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 de Construção
### Arquitetura```
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/
O Containerfile NÃO copia /etc/nginx do upstream. Todos os arquivos de configuração são fornecidos dentro do .deb e rastreados pelo mecanismo de conffile do dpkg. Isso é necessário para o script de entrypoint 10-listen-on-ipv6-by-default.sh, que usa dpkg-query para detectar se o default.conf foi modificado pelo usuário.
./configure && make dentro de um container Debian limpo. Sem binários upstream, sem apt install nginx.build.sh apenas busca arquivos fonte fixados.A compilação é principalmente reproduzível, mas não hermética:
Dockerfile.build, mas não têm versões fixadas.Para melhorar a reprodutibilidade, fixe o digest da imagem base:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'
---
## Detalhes da Remediação de CVE
### CVE-2024-6119 - Atualização de Versão do OpenSSL
| Campo | Valor |
| -------------------- | ---------------------------------------------------- |
| **Componente** | OpenSSL / libssl3 |
| **Severidade** | Alta (CVSS 7.5) |
| **Tipo** | Negação de Serviço via verificações de nomes X.509 |
| **Versão base** | 3.0.11-1~deb12u2 |
| **Versão corrigida** | 3.0.14-1~deb12u2 (ou posterior) |
| **Nossa versão** | 3.0.20-1~deb12u1 |
| **NVD** | https://nvd.nist.gov/vuln/detail/CVE-2024-6119 |
| **Advisory** | https://openssl-library.org/news/secadv/20240903.txt |