PaPoo
cover
techsec
Author
techsec
テックセキュリティの「いま」を、IT 管理者にも一般読者にも分かる言葉でお届け。Microsoft Patch Tuesday、iOS / macOS セキュリティ、Chrome / WordPress 脆弱性、AI 主要ベンダーの動向を、CVE 番号と影響度つきで素早く追跡します。

NGINXのRCE脆弱性「CVE-2026-42945」とは何か? 攻撃コード公開リポジトリをわかりやすく解説

まず押さえたいポイント

何が起きているのか、ざっくり言うと

今回のGitHubリポジトリ「Nginx-Rift」は、​CVE-2026-42945 の exploit、つまり「脆弱性を実際に突くための実証コード」です。
こういうリポジトリは、研究・検証のために公開されることもあれば、攻撃者に悪用されるリスクもあるので、セキュリティ界隈ではかなり注目されます。

元記事の説明によると、問題の核心は NGINX の rewrite 処理 にあります。
rewrite とは、ざっくり言えば URLを条件に応じて書き換える機能 です。たとえば、古いURLを新しいURLに飛ばしたり、特定のパターンを別のパスに振り分けたりするときに使います。
そして set ディレクティブも絡むと、内部で使う文字列処理が複雑になります。

この脆弱性では、NGINX のスクリプトエンジンが 2回処理する設計 になっている点が問題になります。

  1. まず「必要なメモリ量」を計算する
  2. 次に実際にデータをコピーする

ところが、計算フェーズでは is_args が 0 と見なされ、コピー時には is_args が 1 になってしまう、というズレが起きるそうです。
このズレのせいで、​小さめのバッファを確保したのに、実際にはもっと大きいデータを書き込んでしまう。これが heap buffer overflow です。

もう少しだけ噛み砕くと

heap buffer overflow は、たとえるなら ​「小さい箱を用意したのに、大きい荷物を無理やり押し込む」​ ようなものです。
箱の中身がはみ出すと、隣に置いてある別の大事なデータまで壊れてしまうことがあります。

今回の説明では、攻撃者が URI(URLの一部)​ を使って、そのはみ出し先を狙う形になっています。
しかも、実際の悪用では クロスリクエストの heap feng shui なんて言い方が出てきます。これは簡単に言うと、​複数のリクエストを使ってメモリの配置を「都合よく並べる」テクニック です。名前は面白いですが、中身はかなりえげつないです。

さらに元記事では、ngx_pool_tcleanup pointer を壊し、そこから system() を呼ぶように仕向ける流れが説明されています。
system() は、OSに対してコマンドを実行させる関数です。つまり、うまくいくと サーバー上で任意のコマンドを実行できる 可能性がある。これが RCE の怖さです。

正直、この手の脆弱性は「ただのクラッシュ」で終わらないのが厄介です。
メモリ破壊 → 制御情報の改ざん → コード実行 という流れが成立すると、Webサーバーが一気に危険な存在になります。個人的には、ここが一番ゾッとするポイントです。

どのバージョンが危ないのか

元記事では、影響と修正状況が次のようにまとめられています。

製品 影響範囲 修正版
NGINX Open Source 0.6.27 – 1.30.0 1.31.0, 1.30.1
NGINX Plus R32 – R36 R36 P4, R35 P2, R32 P6

また、​F5 の vendor advisory として詳細情報が案内されています。
こういうときは、GitHub上のPoCだけを見て安心せず、​ベンダーの公式アドバイザリを確認して、利用中のバージョンが影響を受けるかを必ず確認する のが大事です。
「うちはたぶん大丈夫」で済ませると、あとで痛い目を見ることが多いと思います。

このGitHubリポジトリの意味

このリポジトリは単なる説明ページではなく、​実際に動く検証コード を含んでいる点が重要です。
README には、以下のような内容が書かれていました。

つまり、これは「理論上こうなる」ではなく、​現実に再現可能な形で脆弱性を示している ということです。
セキュリティ研究の世界では、再現性のあるPoCは非常に強い証拠になります。反面、悪用もされやすいので、公開のバランスは本当に難しいなと感じます。

何がそんなに重要なのか

今回の件で重要なのは、単に「NGINXにバグがあった」ことではありません。
ポイントは、​長年使われてきた基盤ソフトウェアに、未認証RCE級の問題が入りうる という現実です。

NGINX は世界中で使われています。
Webサイトの前段にいることも多く、APIの入口やリバースプロキシとしても大活躍しています。そんな“縁の下の力持ち”に穴があると、影響は一気に広がります。
しかも今回の説明では、脆弱性が 2008年に導入された とされています。もし本当に長期間潜んでいたのだとしたら、かなり大きい話です。

個人的には、ここがいちばん怖いです。
派手な新機能の問題より、​昔からある処理のズレやメモリ管理の勘違い のほうが、実は深刻な被害につながることが多いからです。

一般ユーザーは何を気にすべき?

一般の人でも、次の観点は知っておくと役立ちます。

もちろん、個人利用の範囲なら直接の被害は少ないこともあります。
ただ、企業やサービス運営では話が別です。Webの入口にあるものほど、1つの脆弱性が全体事故につながりやすいので、運用側はかなり真剣に見る必要があります。

まとめ

このGitHubリポジトリ「Nginx-Rift」は、​CVE-2026-42945 を実証する exploit を公開したものです。
内容としては、NGINX の rewrite 処理にある heap buffer overflow を突いて、条件次第で 未認証RCE に至るという、かなり重い話でした。

技術的には難しいですが、要点だけ言えばこうです。

こういう事例を見るたびに、「ソフトウェアは便利だけど、裏ではすごく綱渡りで動いているんだな」と思います。
普段は意識しないNGINXのような基盤ほど、脆弱性が出たときのインパクトは大きい。まさに静かだけど危ないタイプのニュースです。


参考: GitHub - DepthFirstDisclosures/Nginx-Rift: exploit for CVE-2026-42945

同じ著者の記事