
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 |
**Como a correção funciona:**
O pacote `.deb` declara `Depends: libssl3 (>= 3.0.14)`, o que força o
`apt-get install` a obter uma versão do OpenSSL que inclui a correção. Os
repositórios atuais do Debian bookworm fornecem a versão 3.0.20, que corrige o CVE-2024-6119 e
dezenas de outros CVEs do OpenSSL a partir da versão base (CVE-2024-2511, CVE-2024-5535,
CVE-2024-4741, CVE-2023-5678, CVE-2023-6129, CVE-2023-6237, CVE-2024-9143,
CVE-2025-15467, CVE-2025-69420).
**Comportamento do scanner:**
Grype e Trivy veem `libssl3 3.0.20` no banco de dados
dpkg e reconhecem que 3.0.20 ≥ 3.0.14, então o CVE-2024-6119 não é mais
relatado. Nenhum VEX é necessário - o aumento de versão é evidente.
**Verificação:**```bash
grep "CVE-2024-6119" baseline-grype.txt # present
grep "CVE-2024-6119" fixed-grype.txt # absent
| Campo | Valor |
|---|---|
| Componente | nginx ngx_http_rewrite_module |
| Gravidade | Média (classificação nginx.org) |
| Versão base | nginx 1.25.5 |
| Corrigido em | nginx 1.30.1 (lançado em 2026-05-13) |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-42945 |
| Aviso | https://my.f5.com/manage/s/article/K000161019 |
| CHANGES Upstream | nginx 1.30.1 CHANGES: "estouro de buffer de memória heap no módulo de reescrita" |
Vulnerabilidade:
ngx_http_script_regex_end_code() em src/http/ngx_http_script.c não redefinia e->is_args ao processar um resultado de regex de reescrita. Se is_args fosse definido por uma operação anterior do mecanismo de script, cálculos subsequentes de comprimento de buffer no caminho de redirecionamento/reescrita estariam incorretos, causando um estouro de buffer de memória heap de tamanho controlado pelo atacante por meio de URIs de requisição manipuladas.
A correção (uma linha):```c // Added before the existing e->quote = 0; at line 1205 e->is_args = 0;
**Proveniência do patch:**
| Evidência | Localização / Valor |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Commit upstream | [`2046b45aa0c6e712c216b9075886f3f26e9b4ca9`](https://github.com/nginx/nginx/commit/2046b45aa0c6e712c216b9075886f3f26e9b4ca9) |
| Autor upstream | Roman Arutyunyan (arut), commitado por Sergey Kandaurov (pluknet), 2026-05-13 |
| PR upstream | [nginx/nginx#1350](https://github.com/nginx/nginx/pull/1350) |
| Tags upstream | `release-1.31.0`, `release-1.30.1` |
| Correção anterior relacionada | [`74d9399`](https://github.com/nginx/nginx/commit/74d939974d430a2c2e71b0134114d2a7b04dcc20) (2012, problema semelhante de escape `is_args`) |
| Arquivo de patch | `build/patches/CVE-2026-42945.patch` |
| Metadados de proveniência | `build/patches/CVE-2026-42945.provenance.json` |
| Tarball de código-fonte (vulnerável) | `https://nginx.org/download/nginx-1.25.5.tar.gz` SHA256:`2fe2294f8af4144e7e842eaea884182a84ee7970e...` |
| Tarball de código-fonte (corrigido) | `https://nginx.org/download/nginx-1.30.1.tar.gz` SHA256:`99765000d974896b31ca5882d8c279ce3fe7ef6f...` |
| SHA256 do arquivo vulnerável | `c4b10c95b00e43d731a61f2380d406155e037f3cfb40a3bf58711ecefddc799a` |
| SHA256 do arquivo corrigido | `a6182175a22d88f66b9a61ae051bdcfece10d1bb2e643f7f175eb07589143403` |
| Método de derivação | `diff src/http/ngx_http_script.c` entre os dois tarballs (confirmado idêntico ao commit upstream) |
| Linhas alteradas | 1 (apenas adição) |
| Patch aplica-se limpo | Verificado: `patch --dry-run -p1 < build/patches/CVE-2026-42945.patch` termina com 0 |
| Verificação em tempo de compilação | `build.sh` verifica que `e->is_args = 0` está presente no código-fonte após o patch, aborta a compilação caso contrário |
| Atestado em tempo de compilação | Escrito em `artifacts/patch-attestation.json` durante a compilação |
| Teste de regressão | `test/test_cve_2026_42945.py` - exercita o caminho de código vulnerável |
| Script de verificação do patch | `make verify-patch` - redereiva independentemente o patch dos tarballs upstream |
**Como o patch foi criado:**
1. Baixou `nginx-1.25.5.tar.gz` (SHA256 verificado contra o hash fixado)
2. Baixou `nginx-1.30.1.tar.gz` (SHA256 verificado: `99765000d974896b31ca5882d8c279ce3fe7ef6f5c6f9f0a967ed7fd3407f9cc`)
3. Executou `diff src/http/ngx_http_script.c` entre as duas árvores
4. O diff produziu exatamente uma linha - a adição de `e->is_args = 0;`
5. Extraído como um patch diff unificado com linhas de contexto
6. Verificado que o patch se aplica limpo ao nginx 1.25.5
7. Ambas as árvores de código-fonte são mantidas em `research/` para verificação independente
**Teste de regressão:**
O conjunto de testes `test/test_cve_2026_42945.py` exercita o caminho de código
vulnerável enviando solicitações através de regras de reescrita que manipulam
o estado da string de consulta (`is_args`). Ele valida:
- Redirecionamentos de reescrita com `?` final (remoção de consulta) produzem respostas bem formadas
- Reescritas encadeadas que alternam o estado `is_args` não travam o worker
- Strings de consulta longas (4KB+) não causam artefatos de estouro de buffer (bytes nulos, cabeçalhos Location muito longos)
- 100 solicitações mistas rápidas não causam travamentos do worker
- O processo worker sobrevive a todos os casos de teste sem SIGSEGV ou corrupção de heap
Execute: `make test-cve`
**Comportamento do scanner:**
Como a versão do pacote permanece `1.25.5`, os scanners sinalizarão CVE-2026-42945
quando o aviso estiver presente em seu banco de dados. Isso é esperado - scanners
correspondem por `(package-name, upstream-version)` e não podem inspecionar se o
código-fonte foi corrigido. O documento VEX suprime essa descoberta com justificativa
legível por máquina. A supressão do scanner é um mecanismo de comunicação, não a
evidência principal de correção. A evidência principal é a cadeia de proveniência do
patch e o teste de regressão acima.
---
## VEX (Vulnerability Exploitability eXchange)
### Por que o VEX é necessário
Scanners identificam pacotes por `(nome, versão)` do banco de dados dpkg.
Nosso pacote é `nginx 1.25.5-1~bookworm+echo1` - scanners analisam isso como
versão upstream 1.25.5 e sinalizam todos os CVEs que afetam nginx ≤ 1.25.5.
Para correções retroportadas, o scanner não pode determinar que o código vulnerável
foi corrigido. A versão permanece intencionalmente 1.25.5 para preservar a
compatibilidade do pacote. O VEX fornece um atestado legível por máquina de que o
CVE foi tratado, vinculado a evidências verificáveis.
### Cadeia de credibilidade do VEX
A declaração VEX para CVE-2026-42945 NÃO é mera burocracia. Ela é apoiada por:
1. **Proveniência do patch** - `build/patches/CVE-2026-42945.provenance.json`
documenta a fonte upstream exata, o método de derivação e os hashes dos arquivos
2. **Verificação em tempo de compilação** - `build.sh` assegura que o marcador de correção
está presente no código-fonte compilado, abortando a compilação em caso de falha
3. **Atestado de compilação** - `artifacts/patch-attestation.json` registra
hashes de arquivos pré/pós-patch gerados durante a compilação
4. **Teste de regressão** - `test/test_cve_2026_42945.py` exercita o caminho de código
vulnerável sem travamento ou corrupção
5. **Rederivação independente** - `make verify-patch` baixa ambos os tarballs
upstream e demonstra que o patch commitado é o diff mínimo de segurança
### O que o VEX cobre
| CVE | Status | Justificativa | Evidência |
| -------------- | ------- | ----------------------------- | ---------------------------------------------------------- |
| CVE-2026-42945 | `fixed` | `vulnerable_code_not_present` | Patch retroportado + proveniência + teste de regressão + gate de compilação |
O escopo do VEX é intencionalmente restrito: apenas CVEs que este projeto
remediou ativamente com evidências verificáveis são cobertos. Descobertas que são
meramente "esperadas para serem mitigadas" pela versão distribuída não são
suprimidas - isso evita usar o VEX como uma ferramenta de supressão genérica.
### Como funciona
O script `build/generate-vex.sh` produz um documento OpenVEX v0.2.0.
O comando do scanner para aplicá-lo:```bash
# Without VEX - CVE is reported (version-based match):
grype nginx-fixed > fixed-grype.txt
# With VEX - CVE is suppressed with justification:
grype nginx-fixed --vex vex.json > fixed-grype-vex.txt
A supressão VEX é observável nos artefatos de varredura salvos. Note que as
bases de dados do scanner são reconstruídas periodicamente e a presença de CVE
pode variar entre execuções. Os ficheiros salvos baseline-grype.txt e
fixed-grype.txt são evidências pontuais. A validade do documento VEX NÃO
depende do estado da BD do scanner – é verificável independentemente através da
cadeia de proveniência acima.
O pacote chama-se nginx (não nginx-custom). Isto é crítico porque:
nginx permite que ele satisfaça
dependências e seja gerido pelas ferramentas padrão do Debian.As bases de dados de avisos do scanner são reconstruídas periodicamente. Uma CVE presente numa semana pode estar ausente na seguinte. Este projeto NÃO depende da saída do scanner como prova primária de remediação. A cadeia de evidências é:
Os ficheiros de varredura salvos são apenas evidências pontuais.
| Package | Version | CVE-2024-6119 | CVE-2026-42945 |
|---|---|---|---|
| libssl3 | 3.0.20-1~deb12u1 | Não reportado (corrigido pela versão) | n/d |
| nginx | 1.25.5-1~bookworm+echo1 | n/d | Reportado quando na BD (backport invisível ao scanner) |
Com --vex vex.json, o achado da CVE-2026-42945 (se presente na BD do scanner)
é suprimido. A validade do documento VEX é estabelecida pela cadeia de
proveniência (derivação do patch, atestação de compilação, teste de regressão),
não apenas pela saída do scanner.
O conjunto de testes (test/compat.py) inicia tanto nginx:1.25-bookworm como
nginx-fixed como contentores Docker e compara o comportamento. Cada asserção
testa diretamente a imagem corrigida em execução contra a imagem oficial em
execução.
89 asserções. Todas aprovadas.
Além disso, test/test_cve_2026_42945.py fornece ~20 asserções
direcionadas especificamente para a correção da CVE backportada (ver "Teste de
regressão" acima).
| Categoria | O que é comparado | Contagem de asserções |
|---|---|---|
| Metadados da imagem | Entrypoint, Cmd, ExposedPorts, User, StopSignal, Env, Labels | 7 |
| Argumentos nginx -V | Flags de configuração idênticas (normalizadas para o caminho -ffile-prefix-map) | 1 |
| Módulos dinâmicos | Todos os 12 ficheiros .so oficiais presentes + ligação simbólica /etc/nginx/modules | 13 |
| Binário nginx-debug | --with-debug e --with-http_v3_module presentes no debug -V | 2 |
| Layout do sistema de ficheiros | ~20 caminhos chave, ligações simbólicas de log para /dev/stdout e /dev/stderr | ~20 |
| Configuração de utilizador/grupo | Saída de getent passwd/group nginx idêntica | 2 |
| Ficheiros de configuração dpkg | dpkg-query reporta default.conf e nginx.conf como ficheiros de configuração | 1 |
| Pacote fornece | dpkg -s nginx mostra Provides: nginx-r1.25.5 | 1 |
| Binário NJS | njs -v retorna 0.8.4 | 1 |
| Ponto de entrada IPv6 | 10-listen-on-ipv6-by-default.sh altera default.conf de forma idêntica | 1 |
| Modelos Envsubst | Substituição de template NGINX_ENVSUBST produz a mesma saída | 1 |
| Logs de inicialização | Todas as linhas de log do ponto de entrada correspondem ao formato oficial | 1 |
| HTTP GET/HEAD/POST | Corpo da resposta, estado, cabeçalhos correspondem para múltiplos endpoints | ~10 |
| Requisição malformada | Resposta de erro TCP bruta idêntica | 1 |
| Servição de ficheiros estáticos | Ficheiro montado servido com conteúdo correto | 1 |
| Terminação TLS | HTTPS com certificado autoassinado funciona de forma idêntica | 1 |
| Encerramento gracioso | SIGQUIT produz saída limpa (código 0) | 1 |
| Recarregamento de configuração |
--with-http_v3_module é verificada; não é enviado tráfego UDP/QUIC).so estão presentes no discoExecutar:```bash make test
## Tamanho da Imagem
| Imagem | Tamanho (arm64, `docker images`) |
| --------------------- | -------------------------------- |
| `nginx:1.25-bookworm` | ~278 MB |
| `nginx-fixed` | ~332 MB |
A imagem corrigida é maior que a upstream. Isso é esperado: a imagem oficial
usa binários pré-compilados em camadas otimizadas, enquanto a nossa instala
artefatos de compilação e dependências completas de tempo de execução (incluindo
bibliotecas para todos os 12 módulos dinâmicos) em uma base `debian:bookworm-slim`.
A diferença de tamanho é um compromisso para obter controle de compilação no
nível fonte, não uma regressão de funcionalidade.
---
## Avaliação de Risco Residual
### CVEs restantes na imagem corrigida
A imagem corrigida ainda contém vulnerabilidades em bibliotecas do sistema não
tratadas por este projeto (ponto no tempo; execute `make scan` para estado atual):
| Nível de Risco | Pacote | CVE(s) | Observações |
| -------------- | -------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Alto | nginx | CVE-2023-44487 | Mitigado no nginx ≥ 1.25.3 conforme upstream; scanner ainda sinaliza porque o rastreador Debian não fechou o aviso |
| Crítico | libgnutls30 | CVE-2026-42010, CVE-2026-33845 | Nenhuma correção disponível no bookworm |
| Crítico | libc6/libc-bin | CVE-2026-5450 | Não será corrigido nesta versão do Debian |
| Alto | libc6/libc-bin | CVE-2026-5928, CVE-2026-5435, CVE-2026-4437 | glibc não será corrigido no bookworm |
| Alto | dpkg | CVE-2025-6297, CVE-2026-2219 | Corrigível (atualizar para 1.21.23) |
| Alto | libldap-2.5-0 | CVE-2023-2953 | Não será corrigido |
| Alto | curl/libcurl4 | CVE-2026-5773, CVE-2026-6276 | Não será corrigido |
| Alto | ncurses | CVE-2025-69720 | Não será corrigido |
Estas são herdadas do `debian:bookworm-slim` e estão fora do escopo da
remediação de CVEs focada no nginx deste projeto.
### Limitações desta abordagem
1. **Não hermético.** A imagem base e os pacotes apt são resolvidos no momento
da compilação a partir dos repositórios Debian ativos. Fixar o SHA da imagem
base e usar snapshots apt melhoraria a reprodutibilidade.
2. **Nenhum teste comportamental de QUIC.** O suporte a HTTP/3 é compilado
(verificado por flag), mas nenhum tráfego QUIC é exercido no conjunto de testes.
3. **Nenhuma validação de desempenho.** O teste de 50 requisições simultâneas
prova correção, não taxa de transferência ou equivalência de latência.
4. **Apenas carregamento de módulos.** Módulos dinâmicos (GeoIP, image_filter,
XSLT) são verificados como presentes e carregáveis, mas seu comportamento
funcional não é exercido além do carregamento básico.
5. **Evidência de arquitetura única.** Os testes são executados apenas na
arquitetura do host de compilação (arm64 no desenvolvimento; precisaria de CI
para multi-arquitetura).
### Melhorias futuras (não implementadas)
1. Fixar o digest da imagem base e usar URLs de snapshot apt para compilações herméticas.
2. Remover pacotes desnecessários (ncurses, util-linux) puxados como dependências transitivas.
3. Gerar SBOM (alvo `make sbom` existe, usa `syft`) e vincular ao VEX via purl do SBOM.
4. Assinar a imagem com `cosign` e anexar VEX + SBOM + atestado de patch como atestações OCI.
5. Adicionar pipeline de CI (GitHub Actions) para compilação → teste → varredura → envio automatizados.
6. Adicionar teste de protocolo HTTP/3 (cliente QUIC, configuração de certificado, porta UDP).
7. Considerar base distroless para eliminar completamente o ruído de CVEs no nível do SO.
8. Adicionar variante de compilação ASan (AddressSanitizer) para provar ausência de corrupção de heap sob carga de teste.
---
## Flags de Compilação vs. Upstream
As flags `./configure` em `build.sh` são idênticas às relatadas por
`nginx -V` na imagem oficial `nginx:1.25-bookworm`. Isso é verificado
por `test/compat.py::test_nginx_version`, que normaliza a
diferença `-ffile-prefix-map=<path>` e compara as flags restantes
caractere por caractere.
Flags notáveis (presentes em ambas as imagens):
| Flag / recurso | Propósito |
| -------------------------- | ---------------------------------------------------------------------------- |
| `--prefix=/etc/nginx` | Convenção de imagem Docker (não o `/usr/share/nginx` do Debian) |
| `--with-http_v3_module` | Stack QUIC embutido (independente da API QUIC do OpenSSL) |
| `--with-pcre` (PCRE2) | Linka contra `libpcre2-8-0` (não o PCRE1 legado) |
| `--with-stream` | Módulo proxy TCP/UDP (dinâmico) |
| Hardening de segurança | `-fstack-protector-strong`, `FORTIFY_SOURCE=2`, RELRO, PIE |
| Módulos dinâmicos (×12) | geoip, stream_geoip, image_filter, xslt, http_js, stream_js (release + debug)|
| `--with-debug` (debug) | Binário nginx-debug compilado separadamente com flags idênticas + debug |
---
## Pacote Debian
Os metadados do pacote `.deb`:```
Package: nginx
Version: 1.25.5-1~bookworm+echo1
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpcre2-8-0 (>= 10.22),
libssl3 (>= 3.0.14), zlib1g (>= 1:1.2.11), libgeoip1 (>= 1.6.12),
libgd3 (>= 2.1.0~alpha~), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25),
lsb-base (>= 3.0-6), adduser
Provides: httpd, nginx, nginx-r1.25.5
Conflicts: nginx-common, nginx-core
Replaces: nginx-common, nginx-core
Key packaging decisions:
libssl3 (>= 3.0.14) - requer explicitamente OpenSSL corrigido (upstream
declara >= 3.0.0). Este é o mecanismo que aplica a correção da CVE-2024-6119.Provides: nginx-r1.25.5 - satisfaz pacotes de módulos dinâmicos que
dependem deste pacote virtual./etc/nginx/nginx.conf e
/etc/nginx/conf.d/default.conf. Isto é necessário para a verificação
dpkg-query --showformat do script de entrypoint IPv6./bin/false
(correspondente ao upstream - verificado na suite de testes)..so, árvore
completa de configuração /etc/nginx, ficheiros init.d/systemd/logrotate, página man,
HTML por defeito, e o symlink /etc/nginx/modules → /usr/lib/nginx/modules.Pacote nomeado nginx, não nginx-custom. Se renomeado, os scanners não
o associariam aos avisos de nginx - todos os CVEs do nginx desapareceriam
silenciosamente dos relatórios, incluindo os não corrigidos. Manter o nome nginx
garante relatórios honestos do scanner e torna o VEX significativo.
VEX requer visibilidade do CVE. O propósito do VEX é suprimir um CVE que já foi reportado. Se o scanner não encontrar o CVE (devido a renomeação do pacote ou temporização da base de dados), o VEX não tem nada a suprimir.
libssl3 (>= 3.0.14) como dependência do pacote. Em vez de esperar que a
base de execução tenha por acaso um OpenSSL corrigido, o .deb exige
uma versão que contenha a correção para CVE-2024-6119.
Volatilidade da base de dados do scanner. As bases de dados de avisos são reconstruídas periodicamente. Um CVE presente numa semana pode estar ausente na seguinte. Os ficheiros de digitalização guardados neste repositório são evidências pontuais; as digitalizações atuais podem diferir.
Ferramentas de IA utilizadas. O GitHub Copilot auxiliou na análise de patches (comparação das árvores de código fonte do nginx 1.25.5 e 1.30.1), na estrutura da suite de testes, na identificação do problema de evasão do scanner devido à renomeação do pacote, e na elaboração do documento VEX. Os detalhes de empacotamento Debian e as heurísticas de correspondência de versão do Grype exigiram verificação manual.
| SIGHUP aplica nova configuração sem reinício |
| 1 |
| Requisições concorrentes | 50 requisições paralelas retornam todas 200 | 1 |