
源构建的 nginx 1.25.5 容器,包含回溯移植的 CVE-2026-42945 修复、OpenSSL 版本升级、完整的溯源链和 VEX 证明。
nginx:1.25-bookwormОбраз контейнера nginx 1.25.5, собранный из исходников, устраняет две CVE, присутствующие в официальном образе nginx:1.25-bookworm, сохраняя поведение upstream во время выполнения.
| CVE | Компонент | Серьёзность | Метод | Модель проверки |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | Высокий | Обновление версии зависимости | Проверяемо сканером: libssl3 3.0.20 видна в базе данных dpkg |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | Критический | Перенесённый патч исходного кода | Проверяемо по происхождению: вывод патча + регрессионное тестирование + аттестация сборки + VEX |
Они представляют две различные модели устранения:
Аргументы конфигурации nginx -V этого образа совпадают с аргументами nginx:1.25-bookworm (сравниваются посимвольно после нормализации пути сборки -ffile-prefix-map; проверено в test/compat.py::test_nginx_version). Набор тестов (make test) проверяет 89 утверждений, охватывающих метаданные образа, динамические модули, структуру файловой системы, поведение точки входа, упаковку dpkg и обработку HTTP-запросов, по сравнению с образом upstream.
Известные отличия от upstream (не проверены как идентичные):
built with OpenSSL X.X.X в nginx -V отражает версию libssl-dev сборщика, которая может отличаться от версии OpenSSL во время компиляции upstream.debian:bookworm-slim вместо унаследованного дерева пакетов официального образа.libssl3 во время выполнения — это то, что в данный момент предоставляет bookworm (на момент написания 3.0.20), а не фиксированная версия в образе upstream.make image
make test
make test-cve
make verify-patch
make scan
Одна команда для сборки, тестирования и сканирования:```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)
## Сборка
### Архитектура```
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/
Контейнерный файл НЕ копирует /etc/nginx из вышестоящего образа. Все конфигурационные
файлы поставляются внутри .deb-пакета и отслеживаются механизмом conffiles dpkg.
Это необходимо для скрипта точки входа 10-listen-on-ipv6-by-default.sh,
который использует dpkg-query для проверки, был ли default.conf изменён пользователем.
./configure && make внутри чистого контейнера Debian.
Никаких бинарников из вышестоящих образов, ни apt install nginx.build.sh загружает только закреплённые исходные архивы.Сборка в основном воспроизводима, но не герметична:
Dockerfile.build, но не закреплены по версиям.Для улучшения воспроизводимости закрепите дайджест базового образа:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'
---
## Сведения об устранении CVE
### CVE-2024-6119 — Обновление версии OpenSSL
| Поле | Значение |
| -------------------- | ---------------------------------------------------- |
| **Компонент** | OpenSSL / libssl3 |
| **Серьёзность** | Высокая (CVSS 7.5) |
| **Тип** | Отказ в обслуживании через проверку имён X.509 |
| **Базовая версия** | 3.0.11-1~deb12u2 |
| **Исправленная версия** | 3.0.14-1~deb12u2 (или новее) |
| **Наша версия** | 3.0.20-1~deb12u1 |
| **NVD** | https://nvd.nist.gov/vuln/detail/CVE-2024-6119 |
| **Уведомление** | https://openssl-library.org/news/secadv/20240903.txt |
**Как работает исправление:**