ラボまとめコラムニュース
ブログ/記事一覧/NGINX Rift CVE-2026-42945:影響範囲・確認手順・暫定回避策
nginx-rift-cve-2026-42945-cover-ja

NGINX Rift CVE-2026-42945:影響範囲・確認手順・暫定回避策

NGINXのrewriteモジュールに18年間検出されなかった重大脆弱性CVE-2026-42945(NGINX Rift/CVSS 9.2)が公開。認証不要のリモートコード実行が可能で、PoCも公開済み。影響対象・確認コマンド・パッチ手順・暫定回避策をまとめます。

ニュース
kkm-horikawa

kkm

Backend Engineer / AWS / Django

2026.05.159 min9 views
この記事のポイント

NGINXのrewriteモジュールに18年間検出されなかった重大脆弱性CVE-2026-42945(NGINX Rift/CVSS 9.2)が公開。認証不要のリモートコード実行が可能で、PoCも公開済み。影響対象・確認コマンド・パッチ手順・暫定回避策をまとめます。

2026年5月13日、Webサーバとして広く使われているNGINXに、深刻な脆弱性が公開されました。CVE番号は CVE-2026-42945、コードネームは NGINX Rift です。

CVSS v4.0スコアは9.2(Critical)。oss-security メーリングリストでの開示と同時に、攻撃の実証コード(PoC)が 発見者であるdepthfirstの研究記事で公開されており、認証も既存セッションも不要でリモートコード実行(RCE)が成立する可能性が指摘されています。

影響を受けるのはNGINXに同梱されている ngx_http_rewrite_module(URL書き換えを担当するモジュール)で、2008年にリリースされたバージョン0.6.27から最新の1.30.0までが対象です。The Hacker Newsの報道は「18年間検出されなかった欠陥」として報じています。

本記事では、影響範囲、確認手順、パッチ適用、暫定回避策、各ディストリビューションの対応状況を整理します。

影響を受けるNGINXのバージョン

F5公式アドバイザリ K000161019NGINX Security Advisoriesによると、影響範囲は商用版を含むNGINXファミリー全体に及びます。

製品影響バージョン修正バージョン
NGINX Open Source0.6.27 〜 1.30.01.30.1(stable)
1.31.0(mainline)
NGINX PlusR32 〜 R36R36-1(パッチ提供)
NGINX Instance Manager同梱NGINXに依存F5アドバイザリ参照
NGINX App Protect WAF同梱NGINXに依存F5アドバイザリ参照
NGINX Gateway Fabric同梱NGINXに依存F5アドバイザリ参照
Ingress-NGINX Controller同梱NGINXに依存プロジェクト側で更新中

2008年7月リリースの0.6.27から該当するため、18年間にわたり配布されたほぼ全てのNGINXに脆弱性が含まれていたことになります。BleepingComputerの報道は、対象範囲が事実上「現役で稼働するすべてのNGINX」に及ぶと指摘しています。

注意点として、NGINXはApache Traffic Serverや各種PaaSのリバースプロキシ層、ルーターのWeb管理画面など、他のソフトウェアに組み込まれて出荷されているケースも多くあります。自社で直接インストールしていなくても、依存している製品がNGINXを内包している可能性があります。

脆弱性の仕組み(rewriteモジュールのバグ)

NGINXの ngx_http_rewrite_module は、URLを別のURLに書き換えるための機能です。たとえば /old/foo へのアクセスを /new/foo に転送するような設定で使われます。

depthfirstの解析記事によれば、3つの条件が揃った設定で、ヒープバッファオーバーフローが発生します。

  1. rewrite ディレクティブの後ろに rewrite / if / set のいずれかが続く
  2. 名前なしの正規表現キャプチャ($1, $2 など)を使用している
  3. 置換文字列(rewriteの第二引数)に疑問符 ? が含まれる

該当する設定の例は以下のようなものです。

location /api/ {
    rewrite ^/api/(.*)$ /internal?migrated=true&path;=$1 last;
    set $endpoint $1;
}

バグの本質は、書き込み先バッファの「サイズ計算」と「実際の書き込み」で異なるエスケープ前提が使われている点にあります。サイズ計算時はエスケープ処理をしない生バイト長で算出され、書き込み時には ngx_escape_uri() によって特定の文字が最大3バイトに展開されます。確保したバッファより大きいデータが書き込まれ、ヒープ領域が破壊されます。

depthfirstの自動解析システムは、NGINXのソースコードのスキャン開始から約6時間でこの脆弱性を含む5件のセキュリティ問題を検出したと報告しています。そのうち4件がNGINX側で再現確認されました。

侵害された場合の影響範囲

F5公式アドバイザリは、攻撃成立時に発生する事象として、NGINXワーカープロセスの再起動(サービス停止)と、条件によってはリモートコード実行(RCE)を挙げています。RCEの成立には実行環境の前提条件があります。

F5公式の文面では「heap buffer overflow in the NGINX worker process, leading to a restart. Additionally, for systems with ASLR disabled, code execution is possible(NGINXワーカープロセスでヒープバッファオーバーフローが発生し再起動を引き起こす。さらに、ASLR が無効化されたシステムではコード実行が可能である)」とされています。

ASLR(Address Space Layout Randomization)は、メモリ配置をランダム化してこの種の攻撃を成立しにくくする防御機構です。RHEL・Ubuntu・Debianなど主要なLinuxディストリビューションの標準カーネルでは有効化されており、その環境ではコード実行成立条件は限定的になります。一方、古い組み込み機器や、軽量化目的でASLRを無効化したコンテナ・カーネルパラメータを手動変更した運用環境では、条件が成立し得ます。

該当条件想定される被害対応の目安
公開Webサーバとして
1.30.0以下のNGINX運用
かつ該当rewrite設定あり
外部からの単発リクエストで
ワーカープロセス再起動
(サービス断続)
最優先パッチ適用
暫定回避策の同時実施
上記条件+
ASLR無効環境
(古い組込・一部コンテナ)
認証不要のRCEが成立し得る
サーバ乗っ取りリスク
即時パッチ/
該当サーバ停止検討
Ingress-NGINX Controllerを
Kubernetesで運用
クラスタ前段でDoS/
ワーカー再起動
プロジェクトの
更新版へ移行
NGINX Plus R32-R36を
商用サポート契約下で運用
同上+契約条件下の対応R36-1へ更新
F5サポート経由
NGINXを内包する
サードパーティ製品の利用
製品側パッチ未提供の間
同じリスクを継承
ベンダーへ問い合わせ/
暫定回避策の適用

該当rewrite設定の有無は次節の確認コマンドで判定できます。

NGINXのバージョン確認とパッチ適用手順

まず動作中のNGINXのバージョンを確認します。バージョン番号を見るコマンドには -v(小文字)と -V(大文字)の2種類があります。

コマンド出力内容
nginx -vバージョン番号のみ
nginx -Vバージョン番号+コンパイル時のオプション+OpenSSL/PCREのバージョン

脆弱性判定にはバージョン番号があれば足りるため nginx -v でも問題ありませんが、依存ライブラリの状況まで把握したい場合は nginx -V を使います。

# バージョン確認
$ nginx -v
nginx version: nginx/1.28.0

# 1.30.0 以下なら影響対象
# 1.30.1 / 1.31.0 以降なら修正済み

バージョンが1.30.0以下だった場合、続いて該当する設定パターンが存在するかを確認します。Walbrixの解説記事でも紹介されている方法です。

# 全設定をダンプして rewrite を含む行を確認
$ nginx -T | grep -E 'rewrite|^\s*(if|set)\s'

# /etc/nginx 配下の設定ファイルから探す方法
$ grep -rni 'rewrite' /etc/nginx/

該当する rewrite 行に $1$2 といった名前なしキャプチャと、? を含む置換文字列が同時に存在し、かつその後ろに rewrite / if / set ディレクティブが続いていれば、攻撃成立条件を満たします。

パッチ適用は次の手順です。

# Debian / Ubuntu(公式nginxリポジトリ利用時)
$ sudo apt update
$ sudo apt install --only-upgrade nginx

# RHEL / Rocky / AlmaLinux
$ sudo dnf update nginx

# Docker(公式イメージ)
$ docker pull nginx:1.30.1
$ docker pull nginx:1.31.0

# Kubernetes Ingress-NGINX(Helm)
$ helm repo update
$ helm upgrade ingress-nginx ingress-nginx/ingress-nginx

暫定回避策として、すぐにアップデートできない環境では、該当 rewrite 設定の名前なしキャプチャを名前付きキャプチャに書き換えることで、攻撃条件から外せます。設定変更後は nginx -t で構文確認のうえ nginx -s reload を実行します(再起動不要)。

# 修正前(脆弱)
rewrite ^/api/(.*)$ /internal?migrated=true&path;=$1 last;
set $endpoint $1;

# 修正後(名前付きキャプチャ)
rewrite ^/api/(?<path>.*)$ /internal?migrated=true&path=$path last;
set $endpoint $path;

CISA・F5・各ディストリビューションの対応状況

本記事執筆時点(2026年5月15日)での各機関・各製品の対応状況を整理します。

F5(NGINX開発元): 2026年5月13日にアドバイザリK000161019を公開し、同日にNGINX Open Source 1.30.1(stable)と1.31.0(mainline)、NGINX Plus R36-1のパッチを提供しました。商用版のサポート対象顧客向けには個別の更新案内も並行して行われています。

CISA(米サイバーセキュリティ・インフラセキュリティ庁): Known Exploited Vulnerabilities Catalog(KEV)には本記事執筆時点で未登録です。in-the-wildでの大規模な悪用観測には至っていません。PoCの公開と影響範囲を踏まえれば、近い将来の登録は十分にあり得ます。

各Linuxディストリビューション: AlmaLinuxはテストリポジトリでパッチを提供し、正式リポジトリへの配布を進めています。CloudLinuxTuxCareもアドバイザリを公開しました。Debian・Ubuntu・RHEL・Rocky Linuxについても各セキュリティチームが対応中です。

悪用観測の現状: PoC公開から本記事執筆時点までの間、特定IPからの限定的なスキャン増加は観測されているものの、広範な攻撃キャンペーンの公開報告には至っていません。Help Net Securityもこの段階での観測状況を同様に伝えています。

日本国内の報道: @ITWalbrixなどが詳細な解説記事を公開しています。本記事執筆時点でJPCERT/CC・IPAからの公式アナウンスは確認できていません。

関連記事として、同じ5月にLinuxカーネル側で報告された Linuxカーネルの脆弱性 Fragnesia(CVE-2026-46300)、その前段の Copy Fail(CVE-2026-31431)も、サーバ全体の足元を見直す観点で参考になります。

参照元