NGINXのrewriteモジュールに、実に18年間も未検出だった深刻な脆弱性「NGINX Rift」(CVE-2026-42945)が発見されました。この欠陥は、認証なしでリモートコード実行(RCE)やサービス拒否(DoS)を引き起こす可能性があり、インターネットに公開されている多くのWebサーバーに甚大なリスクをもたらします。
「NGINX Rift」とは何か:18年潜伏した深刻な脆弱性
セキュリティ研究者によって、NGINX PlusおよびNGINX Open Sourceに影響を及ぼす複数のセキュリティ脆弱性が公表されました。その中でも特に注目されるのが、18年もの長きにわたり潜伏していた極めて危険な欠陥「NGINX Rift」です。これはngx_http_rewrite_moduleにおけるヒープバッファオーバーフローの脆弱性(CVE-2026-42945、CVSS v4スコア9.2)であり、細工されたHTTPリクエストを送信することで、攻撃者がリモートから任意のコードを実行したり、サービスを停止させたりする恐れがあります。
F5が公開したアドバイザリによると、この脆弱性は特定の条件下で発現します。具体的には、rewriteディレクティブの直後に別のrewrite、if、またはsetディレクティブが続き、さらに疑問符(?)を含む置換文字列とともに名前なしPerl互換正規表現(PCRE)キャプチャ(例: $1, $2)が使用されている場合に問題が生じます。
攻撃者は認証を必要とせず、特定の条件下でこの脆弱性を悪用できます。これにより、NGINXのワーカープロセスでヒープバッファオーバーフローが発生し、プロセスが再起動する可能性があります。さらに、Address Space Layout Randomization (ASLR)が無効化されているシステムでは、コード実行が可能になることも指摘されています。
NGINX Rewrite Moduleの脆弱性:発生条件と攻撃手法
セキュリティ企業depthfirstの研究者によって発見されたこの脆弱性は、その深刻性から「NGINX Rift」と名付けられました。depthfirstの報告によれば、リモートの非認証攻撃者が細工されたURIを送信するだけで、NGINXワーカープロセスのヒープを破壊し、リモートコード実行を達成できるとされています。
この脆弱性が特に危険視される理由はいくつかあります。まず、攻撃に認証が一切不要である点です。事前アクセスや既存のセッションも必要なく、インターネットに公開されている脆弱なNGINXサーバーに対して、単一のHTTPリクエストを送るだけで攻撃が成立する可能性があります。
次に、ヒープオーバーフローを確実に引き起こせる信頼性の高さが挙げられます。攻撃者が書き込むバイトデータは、送信されたURIに由来するため、攻撃者は破壊されるメモリの内容をある程度制御できます。これにより、単なるサービス停止だけでなく、悪意のあるコードを注入し、実行させる可能性が高まります。
さらに、繰り返し攻撃を行うことで、ワーカープロセスをクラッシュさせ続け、サービスを継続的に停止させるDoS状態を引き起こすことも可能です。これは、NGINXインスタンスが提供するすべてのWebサイトの可用性を著しく低下させることにつながります。
影響を受けるNGINX製品とバージョン
この広範な脆弱性は、NGINXの様々な製品とバージョンに影響を及ぼします。F5のアドバイザリでは、以下の製品が影響を受けるとされています。
- NGINX Plus: R32からR36までのバージョン(R32 P6およびR36 P4で修正済み)
- NGINX Open Source: 1.0.0から1.30.0までのバージョン(1.30.1および1.31.0で修正済み)
- NGINX Open Source: 0.6.27から0.9.7までの非常に古いバージョン(修正パッチの提供予定なし)
- NGINX Instance Manager: 2.16.0から2.21.1
- F5 WAF for NGINX: 5.9.0から5.12.1
- NGINX App Protect WAF: 4.9.0から4.16.0、および5.1.0から5.8.0
- F5 DoS for NGINX: 4.8.0
- NGINX App Protect DoS: 4.3.0から4.7.0
- NGINX Gateway Fabric: 1.3.0から1.6.2、および2.0.0から2.5.1
- NGINX Ingress Controller: 3.5.0から3.7.2、4.0.0から4.0.1、および5.0.0から5.4.1
特に注意すべきは、NGINX Open Sourceの非常に古いバージョン(0.6.27から0.9.7)には修正パッチが提供されないという点です。これらのバージョンを使用している場合は、速やかに最新のサポートされているバージョンへのアップグレードを検討する必要があります。
同時期に修正されたその他のNGINX脆弱性
「NGINX Rift」の他にも、NGINX PlusおよびNGINX Open Sourceでは複数の脆弱性が同時に修正されました。これらもWebサーバーの安定性とセキュリティに影響を与える可能性があるため、併せて理解しておくことが重要です。
- CVE-2026-42946 (CVSS v4スコア8.3):
- ngx_http_scgi_moduleおよびngx_http_uwsgi_moduleにおける過剰なメモリ割り当ての脆弱性です。
scgi_passまたはuwsgi_passが設定されている場合、中間者攻撃(AitM)能力を持つリモートの非認証攻撃者が、アップストリームサーバーからの応答を制御し、NGINXワーカープロセスのメモリを読み取ったり、プロセスを再起動させたりする可能性があります。
- CVE-2026-40701 (CVSS v4スコア6.3):
- ngx_http_ssl_moduleにおけるuse-after-freeの脆弱性です。
ssl_verify_clientディレクティブが「on」または「optional」に設定され、かつssl_ocspディレクティブが「on」に設定されている場合に発生します。- リモートの非認証攻撃者が、データの一部を限定的に変更したり、NGINXワーカープロセスを再起動させたりする可能性があります。
- CVE-2026-42934 (CVSS v4スコア6.3):
- ngx_http_charset_moduleにおけるout-of-bounds readの脆弱性です。
charset、source_charset、charset_map、およびバッファリングが無効化されたproxy_passディレクティブが設定されている場合に発生します。- リモートの非認証攻撃者がメモリの内容を開示したり、NGINXワーカープロセスを再起動させたりする可能性があります。
これらの脆弱性も、Webサーバーの運用において無視できないリスクをはらんでいます。特に、情報開示やサービス停止につながる可能性があり、総合的なセキュリティ対策の一環として、これらの修正も速やかに適用することが推奨されます。
独自の視点:なぜ18年間もNGINXの脆弱性が未検出だったのか?
「NGINX Rift」が18年もの間、未検出のまま存在し続けたという事実は、ソフトウェア開発におけるセキュリティの複雑性を浮き彫りにしています。NGINXはオープンソースプロジェクトとして広く利用され、多くの開発者やセキュリティ研究者の目に触れてきたはずです。それでもこれほど長期間にわたり見過ごされてきた背景には、いくつかの要因が考えられます。
まず、脆弱性の発生条件が非常に限定的であった可能性です。rewriteディレクティブの特定の組み合わせ、名前なしPCREキャプチャ、そして疑問符を含む置換文字列という、複数の条件が重なることで初めて問題が顕在化します。このような特定のコードパスは、一般的なテストや静的解析ツールでは見過ごされがちです。
次に、ヒープバッファオーバーフローという種類の脆弱性は、その性質上、常に同じ挙動を示すとは限りません。メモリレイアウトやOSのバージョン、コンパイラの最適化など、様々な環境要因によって挙動が変化するため、再現性が低いと見過ごされたり、他のバグとして誤認識されたりするケースも考えられます。
また、オープンソースプロジェクトでは、機能開発が優先されがちで、既存コードの徹底的なセキュリティレビューが後回しになることも少なくありません。特に、長年にわたって安定稼働していると認識されているモジュールに対しては、改めて深いレベルでの検証が行われる機会が少なかったのかもしれません。今回の発見は、depthfirstのような専門のセキュリティ研究機関による、継続的かつ深いレベルでのコード分析の重要性を示しています。
Webサーバーのセキュリティの重要性とNGINXの役割
NGINXは、その高性能と軽量性から、世界中のWebサイトやアプリケーションで広く利用されているWebサーバーです。Netcraftの調査などによれば、世界中のアクティブなWebサイトの多くでNGINXが稼働しており、その市場シェアは非常に高い水準を維持しています。このような基盤技術に深刻な脆弱性が発見されることは、インターネット全体のセキュリティに大きな影響を及ぼします。
Webサーバーは、インターネットの玄関口とも言える存在です。ここに脆弱性があれば、攻撃者はユーザーの個人情報を盗み出したり、マルウェアを配布したり、Webサイトを改ざんしたり、さらにはバックエンドのシステムに侵入する足がかりを得たりする可能性があります。RCE(リモートコード実行)は、攻撃者がサーバー上で任意のコマンドを実行できることを意味し、これはサーバーの完全な乗っ取りに等しい極めて危険な状態です。DoS(サービス拒否)攻撃も、Webサイトの停止によりビジネス機会の損失や信頼性の失墜を招き、甚大な被害をもたらします。
今回の件は、たとえ長年利用されてきた信頼性の高いソフトウェアであっても、潜在的な脆弱性が存在し得ることを改めて示しました。Webサーバーのセキュリティは、単にWebサイトを保護するだけでなく、その上で展開されるビジネスやユーザーの信頼を守る上で不可欠な要素です。
ユーザーへの影響と緊急対策の実施
今回のNGINXの脆弱性「NGINX Rift」は、未認証で攻撃が可能であるという点で、その影響は広範囲に及び、対策の緊急性が極めて高いと言えます。インターネットに直接公開されているNGINXサーバーは、即座に攻撃の標的となる可能性があります。
想定されるユーザーシナリオ
例えば、企業が公開しているWebサイトやAPIサーバーがNGINXで稼働している場合、攻撃者はこの脆弱性を悪用してサーバーに侵入し、以下のような被害を引き起こす可能性があります。
- 機密情報の窃取: データベースへのアクセス権限を奪い、顧客情報や企業秘密などの機密データを盗み出す。
- Webサイトの改ざん: 公開されているWebページを改ざんし、偽の情報やマルウェアのダウンロードリンクを埋め込む。これにより、Webサイト訪問者が被害に遭うリスクも発生します。
- マルウェアの配布: サーバーを乗っ取り、他のシステムへの攻撃の踏み台として利用したり、ランサムウェアなどのマルウェアを配布する拠点にしたりする。
- サービス停止: 繰り返し攻撃を仕掛けることで、Webサイトやアプリケーションのサービスを停止させ、ビジネスに甚大な損害を与える。
このような深刻な事態を避けるため、NGINXを利用しているシステム管理者や開発者は、速やかに以下の対策を講じる必要があります。
緊急対策の実施
F5は、この脆弱性に対応する修正パッチをすでに提供しています。
- NGINX Plus: R32 P6およびR36 P4以降のバージョンにアップデート。
- NGINX Open Source: 1.30.1および1.31.0以降のバージョンにアップデート。
これらの最新バージョンへのアップグレードが最も推奨される対策です。システム全体への影響を考慮し、テスト環境での検証を行った上で、本番環境への適用を計画的に進めることが重要です。
暫定的な緩和策
もし、すぐにパッチを適用できない状況にある場合は、CVE-2026-42945に対する暫定的な緩和策として、NGINXの設定変更が推奨されています。具体的には、影響を受けるrewriteディレクティブにおいて、名前なしキャプチャ(例: $1, $2)を名前付きキャプチャ(例: (?P<name>...))に置き換えることで、脆弱性の発現条件を回避できるとされています。ただし、これは一時的な措置であり、最終的にはパッチの適用が不可欠です。
継続的なセキュリティ監視
パッチ適用後も、Webサーバーのログ監視やセキュリティスキャンを継続的に実施し、不審なアクセスや異常な挙動がないか常に注意を払うことが重要です。また、定期的なセキュリティアップデートの確認と適用は、新たな脅威からシステムを保護するための基本的な運用習慣として確立すべきです。
| 脆弱性ID | 深刻度 (CVSS v4) | 影響モジュール | 脆弱性の種類 | 主な影響 | 対策 |
|---|---|---|---|---|---|
| CVE-2026-42945 (NGINX Rift) | 9.2 (Critical) | ngx_http_rewrite_module | ヒープバッファオーバーフロー | 未認証RCE、DoS | パッチ適用、名前なしキャプチャを名前付きに置換 (暫定) |
| CVE-2026-42946 | 8.3 (High) | ngx_http_scgi_module ngx_http_uwsgi_module | 過剰なメモリ割り当て | AitMによるメモリ読み取り、再起動 | パッチ適用 |
| CVE-2026-40701 | 6.3 (Medium) | ngx_http_ssl_module | Use-after-free | データ変更、再起動 | パッチ適用 |
| CVE-2026-42934 | 6.3 (Medium) | ngx_http_charset_module | Out-of-bounds read | メモリ内容開示、再起動 | パッチ適用 |
まとめ
今回発見されたNGINXのrewriteモジュールにおける18年間未検出の脆弱性「NGINX Rift」(CVE-2026-42945)は、Webサーバーのセキュリティ管理がいかに重要であるかを改めて浮き彫りにしました。未認証でリモートコード実行やサービス拒否を引き起こす可能性のあるこの欠陥は、多くのシステム管理者にとって緊急の対応を要する課題です。
F5は既に修正パッチをリリースしており、NGINX PlusおよびNGINX Open Sourceのユーザーは速やかに最新バージョンへのアップデートを実施することが強く推奨されます。また、パッチ適用が困難な場合には、一時的な緩和策として設定変更を検討しつつ、最終的にはパッチの適用を完了させるべきです。
このような基盤技術における長期潜伏型の脆弱性の発見は、ソフトウェアのライフサイクル全体を通じた継続的なセキュリティ監査と、専門的な研究機関による深い分析の必要性を示しています。Webサーバーはインターネットの重要なインフラであり、そのセキュリティを確保することは、デジタル社会全体の安全と信頼を守る上で不可欠です。今後も最新のセキュリティ情報を注視し、迅速な対応を心がけることが求められます。

