
ソースビルドされたnginx 1.25.5コンテナ、CVE-2026-42945修正のバックポート、OpenSSLのバージョンアップ、完全な証明連鎖、およびVEX証明書付き。
nginx:1.25-bookworm 向け公式の nginx:1.25-bookworm イメージに存在する2つのCVEを修正し、上流のランタイム動作を維持する、ソースビルドされたnginx 1.25.5コンテナイメージです。
| CVE | コンポーネント | 深刻度 | 手法 | 検証モデル |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | 高 | 依存関係のバージョンアップ | スキャナー検証可能: dpkgデータベースに表示されるlibssl3 3.0.20 |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | クリティカル | バックポートされたソースパッチ | 発祥検証可能: パッチの派生 + 回帰テスト + ビルド証明 + VEX |
これらは2つの異なる修正モデルを表しています。
このイメージのnginx -V構成引数は、nginx:1.25-bookwormのものと一致します(-ffile-prefix-mapビルドパスを正規化した後、文字単位で比較;test/compat.py::test_nginx_versionで検証済み)。
テストスイート(make test)は、イメージメタデータ、動的モジュール、ファイルシステムレイアウト、エントリポイント動作、dpkgパッケージング、およびライブ上流イメージに対するHTTPリクエスト処理をカバーする89のアサーションを検証します。
上流との既知の相違点(同一であると検証されていないもの):
nginx -Vのbuilt with OpenSSL X.X.X行はビルダーのlibssl-devバージョンを反映しており、上流のコンパイル時のOpenSSLとは異なる可能性があります。debian:bookworm-slimベースです。libssl3バージョンは、上流イメージの固定バージョンではなく、bookwormが現在提供するもの(執筆時点では3.0.20)です。make image
make test
make test-cve
make verify-patch
make scan
ビルド、テスト、スキャンを1つのコマンドで:```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/
Containerfileは、上流から/etc/nginxをコピーしません。すべての設定ファイルは.deb内に同梱され、dpkgのconffileメカニズムによって追跡されます。これは、default.confがユーザーによって変更されたかどうかを検出するためにdpkg-queryを使用する10-listen-on-ipv6-by-default.shエントリポイントスクリプトに必要です。
./configure && makeを実行します。上流のバイナリは使用せず、apt install nginxも行いません。build.shは固定されたソースアーカイブのみを取得します。ビルドは_ほぼ_再現可能ですが、完全に密閉(hermetic)ではありません。
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 |
**修正の仕組み:**
`.deb` パッケージは `Depends: libssl3 (>= 3.0.14)` を宣言しており、これにより
`apt-get install` は修正を含む OpenSSL バージョンを強制的に取得します。現在の
Debian bookworm リポジトリでは 3.0.20 が提供されており、CVE-2024-6119 および
ベースライン由来の数十もの他の OpenSSL CVE (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) を修正しています。
**スキャナーの動作:** Grype および Trivy は dpkg データベース内の `libssl3 3.0.20` を認識し、
3.0.20 ≥ 3.0.14 であると判断するため、CVE-2024-6119 は報告されなくなります。
VEX は不要です。バージョンアップ自体が自明です。
**検証:**```bash
grep "CVE-2024-6119" baseline-grype.txt # present
grep "CVE-2024-6119" fixed-grype.txt # absent
脆弱性:
ngx_http_script_regex_end_code() が src/http/ngx_http_script.c 内で、rewrite の正規表現結果を処理する際に e->is_args のリセットに失敗しました。is_args が先行するスクリプトエンジン操作によって設定されていた場合、リダイレクト/rewrite パスでの後続のバッファ長の計算が誤りとなり、細工されたリクエスト URI を介して攻撃者が制御可能なサイズのヒープバッファオーバーフローを引き起こします。
修正(1行):```c // Added before the existing e->quote = 0; at line 1205 e->is_args = 0;
**パッチの出典:**
| 証拠 | 場所 / 値 |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 上流コミット | [`2046b45aa0c6e712c216b9075886f3f26e9b4ca9`](https://github.com/nginx/nginx/commit/2046b45aa0c6e712c216b9075886f3f26e9b4ca9) |
| 上流作者 | Roman Arutyunyan (arut)、Sergey Kandaurov (pluknet) によってコミット、2026-05-13 |
| 上流PR | [nginx/nginx#1350](https://github.com/nginx/nginx/pull/1350) |
| 上流タグ | `release-1.31.0`, `release-1.30.1` |
| 関連する以前の修正 | [`74d9399`](https://github.com/nginx/nginx/commit/74d939974d430a2c2e71b0134114d2a7b04dcc20) (2012, 類似の `is_args` エスケープ問題) |
| パッチファイル | `build/patches/CVE-2026-42945.patch` |
| 来歴メタデータ | `build/patches/CVE-2026-42945.provenance.json` |
| ソースtarball(脆弱性あり) | `https://nginx.org/download/nginx-1.25.5.tar.gz` SHA256:`2fe2294f8af4144e7e842eaea884182a84ee7970e...` |
| ソースtarball(修正版) | `https://nginx.org/download/nginx-1.30.1.tar.gz` SHA256:`99765000d974896b31ca5882d8c279ce3fe7ef6f...` |
| 脆弱性ファイルSHA256 | `c4b10c95b00e43d731a61f2380d406155e037f3cfb40a3bf58711ecefddc799a` |
| 修正ファイルSHA256 | `a6182175a22d88f66b9a61ae051bdcfece10d1bb2e643f7f175eb07589143403` |
| 導出方法 | 2つのtarball間での `diff src/http/ngx_http_script.c`(上流のコミットと同一であることを確認) |
| 変更行数 | 1(追加のみ) |
| パッチの適用確認 | 確認済み: `patch --dry-run -p1 < build/patches/CVE-2026-42945.patch` 終了コード0 |
| ビルド時検証 | `build.sh` はパッチ適用後のソースに `e->is_args = 0` が存在することを確認し、なければビルドを中断します |
| ビルド時証明 | ビルド中に `artifacts/patch-attestation.json` に書き込まれます |
| 回帰テスト | `test/test_cve_2026_42945.py` - 脆弱なコードパスを実行 |
| パッチ検証スクリプト | `make verify-patch` - 上流のtarballから独立してパッチを再導出 |
**パッチの作成方法:**
1. `nginx-1.25.5.tar.gz` をダウンロード(SHA256を固定ハッシュと照合)
2. `nginx-1.30.1.tar.gz` をダウンロード(SHA256検証: `99765000d974896b31ca5882d8c279ce3fe7ef6f5c6f9f0a967ed7fd3407f9cc`)
3. 2つのツリー間で `diff src/http/ngx_http_script.c` を実行
4. 差分はちょうど1行 - `e->is_args = 0;` の追加
5. コンテキスト行を含む unified diff パッチとして抽出
6. パッチが nginx 1.25.5 に正常に適用されることを確認
7. 両方のソースツリーは `research/` に保持され、独立した検証が可能
**回帰テスト:**
テストスイート `test/test_cve_2026_42945.py` は、クエリ文字列状態 (`is_args`) を操作する書き換えルールを介してリクエストを送信し、脆弱なコードパスを実行します。以下を検証します:
- 末尾に `?` が付いたリライトリダイレクト(クエリストリップ)が適切なレスポンスを生成すること
- `is_args` 状態を切り替える連鎖リライトがワーカーをクラッシュさせないこと
- 長いクエリ文字列 (4KB+) がバッファオーバーフローの痕跡(ヌルバイト、過度に長い Location ヘッダー)を引き起こさないこと
- 100回の急速な混合リクエストがワーカークラッシュを引き起こさないこと
- ワーカープロセスが SIGSEGV やヒープ破損なしにすべてのテストケースを通過すること
実行: `make test-cve`
**スキャナーの動作:**
パッケージバージョンが `1.25.5` のままであるため、スキャナーはアドバイザリがデータベースに存在する場合、CVE-2026-42945 をフラグ付けします。これは想定通りです - スキャナーは (パッケージ名、上流バージョン) で一致し、ソースがパッチ適用済みかどうかは検査できません。VEX ドキュメントは、機械可読な正当性を添えてこの検出結果を抑制します。スキャナーの抑制はコミュニケーションメカニズムであり、是正の主たる証拠ではありません。主たる証拠は上記のパッチ来歴チェーンと回帰テストです。
---
## VEX (脆弱性悪用可能性交換)
### VEX が必要な理由
スキャナーは dpkg データベースから (名前、バージョン) でパッケージを識別します。私たちのパッケージは `nginx 1.25.5-1~bookworm+echo1` です - スキャナーはこれを上流バージョン 1.25.5 として解析し、nginx ≤ 1.25.5 に影響するすべての CVE をフラグ付けします。
バックポート修正の場合、スキャナーは脆弱なコードがパッチ適用済みであることを判断できません。バージョンは意図的に 1.25.5 のままであり、パッケージの互換性を維持します。VEX は、CVE が対処されたことを機械可読な証明として提供し、検証可能な証拠にリンクします。
### VEX の信頼性チェーン
CVE-2026-42945 に関する VEX ステートメントは単なる書類ではありません。以下によって裏付けられています:
1. **パッチの出典** - `build/patches/CVE-2026-42945.provenance.json` は正確な上流ソース、導出方法、ファイルハッシュを文書化します
2. **ビルド時検証** - `build.sh` は修正マーカーがコンパイル済みソースに存在することを主張し、失敗時にビルドを中断します
3. **ビルド証明** - `artifacts/patch-attestation.json` はビルド中に生成されたパッチ前後のファイルハッシュを記録します
4. **回帰テスト** - `test/test_cve_2026_42945.py` はクラッシュや破損なく脆弱なコードパスを実行します
5. **独立した再導出** - `make verify-patch` は両方の上流 tarball をダウンロードし、コミットされたパッチが最小限のセキュリティ差分であることを示します
### VEX の対象範囲
| CVE | ステータス | 正当性 | 証拠 |
| -------------- | ------- | ----------------------------- | ---------------------------------------------------------- |
| CVE-2026-42945 | fixed | vulnerable_code_not_present | バックポートパッチ + 出典 + 回帰テスト + ビルドゲート |
VEX の範囲は意図的に狭くなっています: このプロジェクトが検証可能な証拠をもって積極的に是正した CVE のみが対象です。出荷バージョンによって「緩和が期待される」に過ぎない検出結果は抑制されません - これにより、VEX を包括的な抑制ツールとして使用することを回避します。
### 動作方法
`build/generate-vex.sh` スクリプトは OpenVEX v0.2.0 文書を生成します。それを適用するスキャナーコマンド:```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
VEXによる抑制は、保存されたスキャン成果物で確認できます。スキャナーデータベースは定期的に再構築され、CVEの有無は実行ごとに異なる可能性があることに注意してください。保存された baseline-grype.txt および fixed-grype.txt ファイルは、特定時点の証拠です。VEXドキュメントの有効性はスキャナーDBの状態に依存せず、上記の証明チェーンを通じて独立して検証可能です。
パッケージ名は nginx(nginx-custom ではありません)です。これは以下の理由から重要です:
nginx と命名することで、依存関係を満たし、標準的なDebianツールで管理できるようになります。スキャナーアドバイザリデータベースは定期的に再構築されます。ある週に存在したCVEが翌週には存在しない可能性があります。このプロジェクトは、修正の主要な証拠としてスキャナー出力に依存しません。証拠の連鎖は次のとおりです:
保存されたスキャンファイルは特定時点の証拠にすぎません。
| Package | Version | CVE-2024-6119 | CVE-2026-42945 |
|---|---|---|---|
| libssl3 | 3.0.20-1~deb12u1 | 報告なし(バージョンにより修正済み) | n/a |
| nginx | 1.25.5-1~bookworm+echo1 | n/a | DBに存在する場合に報告(バックポートはスキャナーから見えない) |
--vex vex.json を使用すると、CVE-2026-42945の検出(スキャナーDBに存在する場合)が抑制されます。VEXドキュメントの有効性は、証明チェーン(パッチ導出、ビルド証明、回帰テスト)によって確立され、スキャナー出力のみに依存するものではありません。
テストスイート(test/compat.py)は、nginx:1.25-bookworm と nginx-fixed の両方をDockerコンテナとして起動し、動作を比較します。各アサーションは、ライブの修正イメージをライブのアップストリームイメージと直接テストします。
89個のアサーション。すべて合格。
さらに、test/test_cve_2026_42945.py は、バックポートされたCVE修正を特に対象とした約20個のアサーションを提供します(上記の「回帰テスト」を参照)。
--with-http_v3_module フラグの存在のみ確認、UDP/QUICトラフィックは送信しない).so ファイルが存在することを確認する以外の、あまり使用されない動的モジュール(GeoIP、image_filter、XSLT)の動作実行:```bash make test
---
## イメージサイズ
| イメージ | サイズ (arm64, `docker images`) |
| ------- | ------------------------------ |
| `nginx:1.25-bookworm` | ~278 MB |
| `nginx-fixed` | ~332 MB |
固定版イメージはアップストリームより大きくなっています。これは想定内です。公式イメージは最適化されたレイヤでプリコンパイル済みバイナリを使用しますが、当イメージはビルド成果物と完全なランタイム依存関係(12個の動的モジュールすべてのライブラリを含む)を`debian:bookworm-slim`ベースにインストールします。サイズ差はソースレベルでのビルド制御とのトレードオフであり、機能面での劣化ではありません。
---
## 残存リスク評価
### 固定イメージに残るCVE
固定イメージには、本プロジェクトで対処していないシステムライブラリの脆弱性が依然として存在します(時点情報です。現在の状態を確認するには`make scan`を実行してください)。
| リスクレベル | パッケージ | CVE | 備考 |
| ---------- | --------- | --- | ---- |
| High | nginx | CVE-2023-44487 | アップストリームによりnginx ≥ 1.25.3で緩和済み。Debianトラッカーがアドバイザリをクローズしていないためスキャナが依然としてフラグ付け |
| Critical | libgnutls30 | CVE-2026-42010, CVE-2026-33845 | bookwormでは修正なし |
| Critical | libc6/libc-bin | CVE-2026-5450 | 本Debianリリースでは修正予定なし |
| High | libc6/libc-bin | CVE-2026-5928, CVE-2026-5435, CVE-2026-4437 | glibcのbookwormでは修正予定なし |
| High | dpkg | CVE-2025-6297, CVE-2026-2219 | 修正可能(1.21.23にアップグレード) |
| High | libldap-2.5-0 | CVE-2023-2953 | 修正予定なし |
| High | curl/libcurl4 | CVE-2026-5773, CVE-2026-6276 | 修正予定なし |
| High | ncurses | CVE-2025-69720 | 修正予定なし |
これらは`debian:bookworm-slim`から継承されたものであり、本プロジェクトのnginxに焦点を当てたCVE修正の範囲外です。
### 本アプローチの限界
1. **ハーメチックではない。** ベースイメージとaptパッケージは、ビルド時にライブのDebianリポジトリから解決されます。ベースイメージのSHAを固定し、aptスナップショットを使用することで再現性が向上します。
2. **QUICの動作テスト未実施。** HTTP/3サポートはコンパイルされています(フラグで確認)が、テストスイートではQUICトラフィックは実行されません。
3. **パフォーマンス検証なし。** 50同時リクエストテストは正確性を確認しますが、スループットやレイテンシの同等性は確認しません。
4. **モジュールロードのみ。** 動的モジュール(GeoIP, image_filter, XSLT)が存在しロード可能であることは確認していますが、基本的なロードを超えた機能の動作は検証していません。
5. **単一アーキテクチャのエビデンス。** テストはビルドホストアーキテクチャのみ(開発時はarm64、マルチアーキにはCIが必要)で実行されます。
### 将来の改善点(未実装)
1. ベースイメージのダイジェストを固定し、aptスナップショットURLを使用してハーメチックビルドを実現。
2. 推移的依存関係として引き込まれる不要なパッケージ(ncurses, util-linux)を削除。
3. SBOMを生成(`make sbom`ターゲットは存在し、`syft`を使用)し、SBOM purl経由でVEXにリンク。
4. イメージを`cosign`で署名し、VEX + SBOM + パッチ証明文をOCIアテステーションとして添付。
5. CIパイプライン(GitHub Actions)を追加し、自動ビルド→テスト→スキャン→プッシュを実現。
6. HTTP/3プロトコルテスト(QUICクライアント、証明書設定、UDPポート)を追加。
7. ディストロレスベースを検討し、OSレベルのCVEノイズを完全に排除。
8. ASan(AddressSanitizer)ビルドバリアントを追加し、テスト負荷下でのヒープ破損がないことを証明。
---
## ビルドフラグ vs アップストリーム
`build.sh`の`./configure`フラグは、公式の`nginx:1.25-bookworm`イメージで`nginx -V`が報告するものと同一です。これは`test/compat.py::test_nginx_version`で検証されており、`-ffile-prefix-map=<path>`の違いを正規化し、残りのフラグを文字単位で比較します。
注目すべきフラグ(両方のイメージに存在):
| フラグ / 機能 | 目的 |
| ------------ | ---- |
| `--prefix=/etc/nginx` | Dockerイメージの慣例(Debianの`/usr/share/nginx`ではない) |
| `--with-http_v3_module` | 組み込みQUICスタック(OpenSSL QUIC APIとは独立) |
| `--with-pcre` (PCRE2) | `libpcre2-8-0`にリンク(レガシーPCRE1ではない) |
| `--with-stream` | TCP/UDPプロキシモジュール(動的) |
| セキュリティ強化 | `-fstack-protector-strong`, `FORTIFY_SOURCE=2`, RELRO, PIE |
| 動的モジュール (×12) | geoip, stream_geoip, image_filter, xslt, http_js, stream_js (release + debug) |
| `--with-debug` (debug) | nginx-debugバイナリを同一フラグ+debugで個別にビルド |
---
## Debianパッケージ
`.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
重要なパッケージングの決定:
libssl3 (>= 3.0.14) - パッチ適用済みのOpenSSLを明示的に要求します(アップストリームは >= 3.0.0 と宣言しています)。これがCVE-2024-6119の修正を強制するメカニズムです。Provides: nginx-r1.25.5 - この仮想パッケージに依存する動的モジュールパッケージを満たします。/etc/nginx/nginx.conf および /etc/nginx/conf.d/default.conf。これはIPv6エントリポイントスクリプトの dpkg-query --showformat チェックに必要です。/bin/false で作成します(アップストリームと一致 - テストスイートで確認済み)。.so モジュール、完全な /etc/nginx 設定ツリー、init.d/systemd/logrotateファイル、マニュアルページ、HTMLデフォルト、および /etc/nginx/modules → /usr/lib/nginx/modules のシンボリックリンク。パッケージ名は nginx であり、nginx-custom ではありません。 名前を変更すると、スキャナはそれをnginxアドバイザリと一致させなくなり、未修正のものを含むすべてのnginx CVEがレポートから静かに消えてしまいます。nginx という名前を維持することで、スキャナの正直なレポートが保証され、VEXが意味を持つようになります。
VEXにはCVEの可視性が必要です。 VEXの目的は、すでに報告されているCVEを抑制することです。スキャナがCVEを見つけられない場合(パッケージ名の変更やDBのタイミングによる)、VEXは抑制するものを持ちません。
パッケージ依存関係としての libssl3 (>= 3.0.14)。 ランタイムベースがたまたまパッチ適用済みのOpenSSLを持っていることを期待するのではなく、.deb はCVE-2024-6119の修正を含むバージョンをハード要求します。
スキャナデータベースの変動性。 アドバイザリデータベースは定期的に再構築されます。ある週に存在するCVEが次の週には存在しない可能性があります。このリポジトリに保存されたスキャンファイルは時点の証拠です。現在のスキャンは異なる場合があります。
使用されたAIツール。 GitHub Copilotは、パッチ分析(nginx 1.25.5と1.30.1のソースツリー比較)、テストスイート構造、パッケージ名変更によるスキャナ回避問題の特定、およびVEX文書の作成を支援しました。Debianパッケージングの詳細とGrypeのバージョン一致ヒューリスティックスは手動での検証が必要でした。
| フィールド | 値 |
|---|
| コンポーネント | nginx ngx_http_rewrite_module |
| 重大度 | Medium(nginx.org の分類) |
| ベースライン バージョン | nginx 1.25.5 |
| 修正バージョン | nginx 1.30.1(リリース日 2026-05-13) |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-42945 |
| セキュリティアドバイザリ | https://my.f5.com/manage/s/article/K000161019 |
| アップストリームの変更 | nginx 1.30.1 CHANGES: "rewrite モジュールにおけるヒープメモリバッファオーバーフロー" |
| カテゴリ | 比較内容 | アサーション数 |
|---|
| イメージメタデータ | Entrypoint、Cmd、ExposedPorts、User、StopSignal、Env、Labels | 7 |
| nginx -V 引数 | 構成フラグが同一(-ffile-prefix-map パスで正規化) | 1 |
| 動的モジュール | アップストリームの12個の .so ファイルすべてが存在 + /etc/nginx/modules シンボリックリンク | 13 |
| nginx-debug バイナリ | デバッグ -V に --with-debug と --with-http_v3_module が存在 | 2 |
| ファイルシステム構成 | 約20のキーパス、/dev/stdout および /dev/stderr へのログシンボリックリンク | 約20 |
| ユーザー/グループ設定 | getent passwd/group nginx の出力が同一 | 2 |
| dpkg 設定ファイル | dpkg-query が default.conf と nginx.conf を設定ファイルとして報告 | 1 |
| パッケージ提供 | dpkg -s nginx が Provides: nginx-r1.25.5 を表示 | 1 |
| NJS バイナリ | njs -v が 0.8.4 を返す | 1 |
| IPv6 エントリポイント | 10-listen-on-ipv6-by-default.sh が default.conf を同一に変更 | 1 |
| Envsubst テンプレート | NGINX_ENVSUBST テンプレート置換が同じ出力を生成 | 1 |
| 起動ログ | すべてのエントリポイントログ行がアップストリーム形式と一致 | 1 |
| HTTP GET/HEAD/POST | 複数のエンドポイントでレスポンスボディ、ステータス、ヘッダーが一致 | 約10 |
| 不正なリクエスト | Raw TCPエラーレスポンスが同一 | 1 |
| 静的ファイル提供 | マウントされたファイルが正しいコンテンツで提供される | 1 |
| TLS 終端 | 自己署名証明書を使用したHTTPSが同一に動作 | 1 |
| グレースフルシャットダウン | SIGQUIT がクリーンな終了(コード0)を生成 | 1 |
| 設定再読み込み | SIGHUP が再起動なしで新しい設定を適用 | 1 |
| 同時リクエスト | 50の並列リクエストがすべて200を返す | 1 |