NGINX の深刻な脆弱性 CVE-2026-42945 が FIX:RCE と PoC の登場

Critical 18-Year-Old NGINX Vulnerability Enables Remote Code Execution Attacks

2026/05/14 CyberSecurityNews — NGINX のソース・コードにおいて、2008年から存在していた深刻なヒープバッファ・オーバーフローの脆弱性 CVE-2026-42945 (CVSS 9.2) が発見された。この脆弱性に対しては、すでに PoC エクスプロイトが公開され、認証を必要としないリモート・コード実行 (RCE) が実証されている。NGINX は、世界で最も広く利用される Web サーバの 1つであるため、その影響は広範に及ぶ。

この脆弱性は、NGINX の ngx_http_rewrite_module に存在する。このエンジンは、URL 書き換え/変数割り当てを担っており、大半の NGINX デプロイメントで使用されている。このバグは 2008年にリリースされた Version 0.6.27 で混入して以来、Version 1.30.0 に至るまでの全バージョンにおいて 18年間検出されなかった。

18年間潜伏した NGINX RCE 脆弱性

この脆弱性は、rewrite ディレクティブと set ディレクティブを同時に使用するコンフィグによりトリガーされるが、このパターンは API ゲートウェイ構成において一般的である。

NGINX の内部スクリプト・エンジンは、これらのディレクティブを 2段階で処理している。具体的には、第1段階 (長さ計算) でメモリ長を算出した後に、第2段階 (コピー処理) で確保済みバッファへデータを書き込む仕様となっている。

この問題の本質は、2 段階間の状態の不整合にある。たとえば、rewrite ディレクティブにクエスチョン・マーク (?) が含まれる場合、メイン・スクリプト・エンジンには is_args = 1 フラグが恒久的に設定される。その一方で、第1段階 (長さ計算) では初期化済みのサブ・エンジンが使用されるため、is_args は実質的に 0 となり、結果として URI エスケープを考慮しない不適切な長さ計算が実行されてしまう。

NGINX Hit by 4 Memory Flaws (source :depthfirst)
NGINX Hit by 4 Memory Flaws (source:depthfirst)

第2段階 (コピー処理) では、メイン・エンジンが is_args = 1 の状態で動作し、ngx_escape_uri 関数が各バイトを 1 バイトから 3 バイトへ展開するため、結果として確保されたバッファ・サイズを大幅に超えるデータが書き込まれることになり、典型的なヒープバッファ・オーバーフローが発生する。

ASLR 無効環境で動作する RCE エクスプロイトが、研究者により開発されている。この脆弱性は、セキュリティ企業 depthfirst が 2026年4月のコード監査中に発見したものであり、その際には、3件のメモリ破損バグも特定されている。特定されたバグを用いる攻撃チェーンは、ヒープ操作/POST ボディを用いた偽 cleanup 構造のスプレー攻撃/NGINX の決定的マルチ・プロセス構造を組み合わせることで、安定したコード実行を実現している。この PoC は、GitHub 上で公開済みである。

今回の調査で確認された 4件の脆弱性は以下の通りである。

CVESeverityCVSSAffected ModuleImpact
CVE-2026-42945Critical9.2ngx_http_rewrite_moduleHeap buffer overflow → RCE
CVE-2026-42946High8.3ngx_http_scgi/uwsgi_module~1 TB allocation → crash
CVE-2026-40701Medium6.3ngx_http_ssl_moduleUse-after-free via OCSP
CVE-2026-42934Medium6.3ngx_http_charset_moduleOut-of-bounds read

この脆弱性は広範な F5/NGINX 製品に影響する。

NGINX Open Source 0.6.27–1.30.0
NGINX Plus R32–R36
NGINX Instance Manager
NGINX App Protect WAF
NGINX Gateway Fabric
NGINX Ingress Controller

各製品の修正バージョンは以下である。

ProductAffected VersionsPatched Version
NGINX PlusR32 – R36R36 P1+ / R37+
NGINX Instance Manager2.16.0 – 2.21.12.21.2+
F5 WAF for NGINX5.9.0 – 5.12.15.12.2+
NGINX App Protect WAF4.9.0 – 4.16.0 and 5.1.0 – 5.8.04.16.1+ / 5.8.1+
F5 DoS for NGINX4.8.04.8.1+
NGINX App Protect DoS4.3.0 – 4.7.04.7.1+
NGINX Gateway Fabric1.3.0 – 1.6.2 and 2.0.0 – 2.5.11.6.3+ / 2.5.2+
NGINX Ingress Controller3.5.0 – 3.7.2, 4.0.0 – 4.0.1, 5.0.0 – 5.4.13.7.3+ / 4.0.2+ / 5.4.2+

F5 は 2026年5月13日に公式セキュリティ・アドバイザリを公開し、NGINX 1.30.1/1.31.0 への速やかなアップグレードを、管理者に対して強く推奨している。パッチの適用が根本的な解決策となるが、即時アップデートが困難な場合には、rewrite ディレクティブと set ディレクティブを併用するコンフィグを監査した上で、パッチ適用までの間は追加の WAF レイヤ背後に配置するなどの、暫定的な回避策を講じることが推奨される。