概要

セキュリティ研究チーム「depthfirst」は2026年5月14日、世界で最も広く使われているWebサーバーのNGINXに深刻な脆弱性「NGINX Rift」(CVE-2026-42945)を発見したと公表した。CVSSv4スコアは9.2と極めて高く、影響を受けるのはngx_http_rewrite_moduleで、ヒープバッファオーバーフローにより未認証のリモートコード実行(RCE)またはサービス拒否(DoS)攻撃が可能になる。この脆弱性はNGINX 0.6.27が公開された2008年ごろから潜伏していたとされており、18年間にわたって見落とされてきた。F5との責任ある開示(Coordinated Disclosure)を経て、修正版のリリースと同時に詳細が公開された。

技術的な詳細

脆弱性のトリガー条件は、rewriteディレクティブで名前なしPCREキャプチャグループ$1$2など)と疑問符(?)を含む置換文字列を組み合わせた設定にある。具体的なメカニズムは次の通りだ。

  1. 疑問符によりNGINX内部のフラグが設定されたままになる
  2. バッファサイズの計算時にURIエスケープ処理が考慮されない
  3. 実際の書き込み処理はエスケープが有効な状態で行われ、+%&などの文字が2バイトに展開される
  4. 結果として、割り当てられたヒープバッファの外側へ確定的なメモリ書き込みが発生する

研究チームは「バッファ外に書き込まれるバイト列は攻撃者のURIに由来するため、メモリ破壊はランダムではなく攻撃者によってコントロール可能」と説明している。ASLR(アドレス空間配置ランダム化)が無効な環境では単一リクエストでRCEが成立し、ASLRが有効な環境でも複数リクエストによるクラッシュループでサービス停止を引き起こせる。

影響範囲と修正バージョン

影響を受ける製品とバージョンは以下の通りだ。

製品影響バージョン修正バージョン
NGINX Open Source0.6.27〜1.30.01.30.1 または 1.31.0
NGINX PlusR32〜R36R32 P6 および R36 P4
NGINX Instance Manager複数バージョン各系列の最新パッチ
App Protect WAF / Gateway Fabric / Ingress Controller複数バージョン各系列の最新パッチ

なお、BIG-IP・F5OS・F5 Distributed Cloudはこの脆弱性の影響を受けない。旧来のバージョン(0.6.27〜0.9.7)はサポート対象外でパッチが提供されないため、より新しいバージョンへの移行が必要となる。

同時公開された関連脆弱性

今回の公開に合わせ、3つの関連脆弱性も同時に修正された。

  • CVE-2026-42946(CVSS 8.3): SCGIおよびUWSGIモジュールでのメモリ過剰割り当て
  • CVE-2026-40701(CVSS 6.3): SSLモジュールのuse-after-free
  • CVE-2026-42934(CVSS 6.3): charsetモジュールの境界外読み取り

推奨対処策

F5およびNGINXは即時アップグレードを強く推奨している。パッチ適用後はワーカープロセスが新しいバイナリを読み込むよう、NGINXを再起動することが必要だ。すぐにアップグレードできない場合の緊急回避策として、設定ファイル内の名前なしキャプチャを名前付きキャプチャに書き換える方法がある。

# 脆弱な設定例
rewrite ^/users/([0-9]+)$ /profile.php?id=$1 last;

# 安全な設定例(名前付きキャプチャを使用)
rewrite ^/users/(?<user_id>[0-9]+)$ /profile.php?id=$user_id last;

公開時点では野生での悪用(in-the-wild exploitation)は確認されていないが、NGINXは世界中のWebトラフィックの大部分を処理しており、攻撃者にとって非常に魅力的なターゲットとなる。CVSSスコアの高さと攻撃条件の平易さを踏まえ、早急なパッチ適用が求められる。