NGINX Rift:18年前のヒープオーバーフロー脆弱性の発見

世界で最も広く使用されているウェブサーバーの一つで、"NGINX Rift"("CVE-2026-42945")と呼ばれる重大なセキュリティ脆弱性が発見されました。この欠陥はヒープオーバーフローで、18年間検出されずに残っており、バージョン0.6.27から1.30.0までに及びます。

この発見は、最も成熟したソフトウェアプロジェクトでさえ継続的なセキュリティ監査が重要であることを示しています。非常に安定したコードベースであっても、rewriteset ディレクティブに関わるレガシーなコードパスでは、重大な脆弱性がほぼ二十年もの間隠れ続ける可能性があります。

脆弱性の技術的性質

この脆弱性はヒープオーバーフローです。技術的には、ヒープに割り当てられたメモリブロックに対して、その容量を超えるデータを書き込むことで、攻撃者が隣接するメモリを書き換えることができる状態を指します。

DepthFirst の調査チームによると、NGINX 設定で rewriteset ディレクティブの特定の組み合わせが使用されたときに脆弱性が発動します。すべての NGINX インストールが影響を受けるわけではありませんが、バージョン1.30.0まででこれらのディレクティブを複雑なルーティングや変数代入に使用している環境はリスクがあります。

エクスプロイトと ASLR の役割

この脆弱性の最も重要な側面の一つは、アドレス空間レイアウトランダム化(ASLR)などの最新のセキュリティ対策を回避できる点です。

NGINX の所有者である F5 は、ASLR が無効化されたシステムではコード実行が可能であると述べていますが、欠陥を発見した研究者は NGINX のアーキテクチャに基づく反論を提示しています。

NGINX はマスタープロセスからワーカープロセスがフォークされるマルチプロセスアーキテクチャを採用しています。この設計により、メモリ空間は各子ワーカーに正確に複製され、異なるワーカー間で決定論的なヒープレイアウトが形成されます。

「もしエクスプロイトが失敗してワーカーがクラッシュした場合、マスタープロセスは全く同じメモリレイアウトの新しいワーカーを単に生成します。これにより、ワーカーがクラッシュしてメモリレイアウトが変わることを心配せずに、成功するまで安全に何度も試行できるのです。」

この決定論的な性質により、攻撃者はポインタをバイト単位で徐々に上書きすることで ASLR のオフセットを漏洩させる可能性があり、理論的には ASLR が有効なシステムでも脆弱性を悪用できるようになります。

影響と緩和策

CVE-2026-42945 の発見は、ソフトウェアプロジェクトの成熟度に対する安定性の認識が、セキュリティの保証ではないことを厳しく思い起こさせます。

緩和策

NGINX のバージョンが 0.6.27 から 1.30.0 の間である場合、以下の対策を講じることが推奨されます。

  1. NGINX の更新: 最も重要な推奨は、NGINX/F5 が提供する最新のパッチが適用されたバージョンへ更新することです。
  2. 設定の見直し: すぐに更新できない場合は、rewriteset ディレクティブの使用について設定ファイルを確認してください。これらを置き換えるか、代替のルーティングロジックを実装できれば、リスクを軽減できる可能性があります。

コミュニティメンバーが指摘しているように、rewriteset の使用パターンは、NGINX 上で展開される従来型の PHP アプリケーションで一般的であり、これらのレガシーデプロイは特に脆弱です。

Sources