
CVE-2026-42945
NGINXにおける重大なヒープベースのバッファオーバーフロー
CVE-2026-42945(別名 NGINX Rift)は、NGINXの ngx_http_rewrite_module における重大なセキュリティ脆弱性です。
この脆弱性は、URI書き換えルールの処理中に、長さチェックフェーズと実際のコピー/エスケープフェーズの間でバッファサイズの計算に一貫性がないことに起因します。
| 状態 | バージョン |
|---|---|
| 影響あり | 0.6.27 → 1.30.0 |
| 修正済み | 1.30.1 および 1.31.0+ |
| 状態 | リリース |
|---|---|
| 影響あり | R32 → R36 |
| 修正済み | R36 P4, R32 P6, 37.0.0+ |
注意: F5 NGINX製品(Ingress Controller、App Protect、Gateway Fabricなど)の多くは、脆弱なベースバージョンで実行されている場合、影響を受けます。
このバグは、特定のディレクティブの組み合わせによって引き起こされます:
? が含まれている rewrite ディレクティブ(is_args フラグを有効化)。$1、$2など)を使用する別の rewrite、if、または set ディレクティブ。is_args = false)を使用 → 必要なバッファサイズを過小評価。is_args = true)を使用 → NGX_ESCAPE_ARGS を指定して ngx_escape_uri() を呼び出す。+、&、%など)がヒープオーバーフローを引き起こす。| 影響 | 深刻度 | 説明 |
|---|---|---|
| サービス拒否 | 高 | ワーカープロセスの信頼性の高いクラッシュ |
| リモートコード実行 | 重大(条件付き) |
CVSS v4.0 スコア: 9.2 (重大)
CVSS v3.1 スコア: 8.1 (高)
名前なしキャプチャを名前付きキャプチャに置き換えます:
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
主な推奨事項: ? を含む置換文字列とその後の $1、$2 などの使用を組み合わせたすべての書き換えルールを監査してください。
CVE-2026-42945 は、長期間存在したこと、悪用の容易さ、RCEの可能性により、近年で最も重要なNGINX脆弱性の1つです。
今すぐ行動を — インスタンスにパッチを適用し、設定を更新してください。
セキュリティコミュニティに ❤️ を込めて
| ASLRが無効または回避された場合に可能 |
| 攻撃の複雑さ | 低 | 単一のHTTPリクエスト、認証不要 |