Kubernetes Ingress-NGINXコントローラの脆弱性「IngressNightmare」のなかでも深刻な「CVE-2025-1974」とは

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「IngressNightmare:Kubernetes Ingress-NGINXのCVE-2025-1974を理解する」を再編集したものです。

米国時間2025年4月23日に掲載されたフォーティネットブログの抄訳です。

影響を受けるプラットフォーム :Ingress-NGINXコンテナv1.11.0~4、v1.12.0、v1.11.0以前
影響を受けるユーザー     :あらゆる組織
影響             :攻撃者による脆弱なシステムの乗っ取り
深刻度            :クリティカル

 2025年3月24日、Wiz, Inc.のリサーチャーは、Kubernetes Ingress-NGINXコントローラに存在する一連の重大な脆弱性を公表しました。これらはIngressNightmareと呼ばれています。中でも最も深刻な脆弱性がCVE-2025-1974です。これを利用すると、攻撃者はAdmission Webhookにネットワークアクセスするだけで、Ingressコントローラのポッドでリモートコード実行(RCE)が可能になります。この脆弱性は3月初旬に非公式な形で開示され、パッチが入手可能になった後、正式に公表されました。脆弱性のCVSSスコアは9.8で、修正プログラムの適用が重要かつ急務であることは明白です。

 本ブログでは、これらのCVEの影響、エクスプロイトのPoC(概念実証)デモ、さらには減災策と検知戦略を解説します。また、この種の攻撃に対するLacework FortiCNAPPと広範なフォーティネット セキュリティ ファブリックのカバレッジも紹介します。

IngressNightmare CVEの概要

CVE-2025-1974:Ingress-NGINX Admission Webhookに対する不正な未認証リクエストを可能にする重大な脆弱性。攻撃者は、悪意のあるNGINXディレクティブが含まれた不正なIngressオブジェクトをコントローラに注入でき、それがコントローラポッドでのRCEに利用されます。
追加アノテーションを注入するCVE:IngressNightmareとも呼ばれるこのファミリーには、auth-url、auth-tls-match-cn、mirror-targetといったIngressアノテーションのサニタイズ方法に関するバグも含まれています。攻撃者は、これらのバグとCVE‑2025‑1974を連鎖させて不正なNGINX設定を注入し、最終的には任意のコードを実行することができます。

注目点:多くの設定では、クラスタのネットワーク内から(すなわち任意のポッドから)Admission Webhookへのアクセスが可能になっています。これは、Kubernetes APIの認証情報がなくても、クラスタ内の感染したポッド、つまり攻撃者が作った足場から、アノテーション注入の脆弱性を悪用できることを意味します。

ネットワークアクセスが重要な理由

 当社が行ったテストでは、攻撃者がこの脆弱性を悪用するには、クラスタネットワーク上のIngress-NGINXアドミッションコントローラに到達する必要があることが確認されました。kubectl port-forwardコマンドや、その他の間接的手段でしかクラスタにアクセスできない場合は、一時ファイルのアップロード手順が確実に動作しない可能性があります。したがって実際には、このRCEエクスプロイトは、クラスタネットワーク上に内部を監視できるポイント(例えば、SSRF、ジョブの構成ミス、または以前の部分的侵害によって動作している不正コンテナなど)がすでにあるポッドからしばしば実行されています。

攻撃フローの概要

 これらの脆弱性が連鎖することで、攻撃者は以下が可能になります。

1. NGINXが大きいサイズのHTTPリクエストをデフォルトでバッファリングする機能を悪用して、不正な.soファイルをアップロードします。

2. /proc/<pid>/fd/<fd>の特殊なパスを介して.soファイルを参照します。これは、ファイルが削除対象としてマークされた後でも可能です。なぜなら、オープンファイル記述子を介してアクセス可能な状態が維持されているからです。

3. 巧妙に細工されたIngressアノテーションを利用して、不正なNGINXディレクティブを注入します(ssl_engineなど)。

4. Ingressコントローラポッドのサービスアカウント権限を継承し、ポッドの内部からリバースシェルを呼び出します。この権限には、クラスタ全体の機密情報を読み取る広範囲な権限が含まれる場合があります。

 エクスプロイトの開始から終了までを短いデモにまとめました。以下の動画でご視聴いただけます。

ネットワークに関する注意点:当社のテストでは、ファイルアップロードのメカニズムを起動するのに必要なネットワーク条件を、ポートフォワーディングで再現できるとは限らないことが確認されています。ご自身の環境を評価する際には、すでにクラスタのネットワーク内にあるポッドからエクスプロイトを実行することをお勧めします。

減災策の概要

 脆弱性連鎖はクラスタのほぼ全体を侵害する可能性があるため、減災策は最優先課題です。主な推奨事項は次の通りです。

1. Ingress-NGINXをv1.12.1(またはそれ以降)あるいはv1.11.5(またはそれ以降)にアップグレードします。このパッチを適用すると、RCEを可能にしていた高リスクな検証アプローチが削除されます。

2. アップグレードをただちに実施できない場合は、Admission Webhookへのアクセスを制限します。ネットワークポリシーを適用し、Kubernetes APIサーバーのみがWebhookに接続できるようにしてください。

3. 使用していない機能(スニペットのアノテーション、TLSクライアント認証、ミラーリングなど)が必要なければ、それらを無効化します。注入ポイントが少ないほどセキュリティは向上します。

4. サービスアカウントの管理を強化します。Ingressで使用されるサービスアカウントに対し、クラスタ全体の権限を付与することは避けてください。コントローラが侵害された場合、アカウントの権限が最小限であれば、被害の範囲は大幅に縮小されます。

 パッチの詳細については以下を参照してください。

フォーティネット脅威シグナルレポート
Kubernetesアドバイザリ:CVE‑2025‑1974

IngressNightmareの悪用を検知する方法

Lacework FortiCNAPPの検知機能

 当社のテスト環境では、以下のLacework FortiCNAPPコンポーネントを活用して侵害を多層的に可視化しました。

・Laceworkエージェント
 ・不審なプロセスの実行をフラグで通知します。
 ・ネットワーク接続を監視し、攻撃者ドメインへの異常な発信コールを検知します。
 
・Kubernetesコンプライアンスエージェント
 ・リソース構成を追跡し、安全でないIngressの定義や、過剰な権限を持つサービスアカウントを特定します。
 
・Kubernetes監査ログ
 ・感染したポッドからの機密情報の読み取りなど、Kubernetes APIへのリクエストを監視します。
 
・クラウド構成と監査ログの監視
 ・クラスタ構成の変更をクラウドレベルまたはインフラストラクチャレベルで特定します。
  ・ノードの認証情報やサービスアカウントが不正利用されている場合は、リアルタイムでアラートを送信します。

 我々のデモでは、以下の場合にアラートが発行されました。

ノードの認証情報の流出:感染したポッドからノードの認証情報が不正利用されたことが、監査ログで確認されました。
不審なドメインへの発信:エージェントがburpcollaborator.netへの返信を検知しました。このドメインは、リバースシェルのテストでよく知られています。
Ingress-NGINXのクラスタリソースの列挙:感染したポッドでの列挙(機密情報のリスト作成など)が異常な振る舞いと判定されました。
サービスアカウントの悪用:デフォルトまたは過剰な権限を持つサービスアカウントのトークンが水平移動に使用された痕跡が確認されました。

フォーティネット セキュリティ ファブリックのカバレッジ

 Lacework FortiCNAPPによるコンテナ識別型の保護に加えて、広範なフォーティネット セキュリティ ファブリックが防御を一層強化します。

FortiGate NGFWは不審な送信バターンを特定し、データ漏洩の試みを阻止します。
FortiAnalyzerはログとIOC(Indicators of Compromise:侵害指標)を集約し、さらに詳細なフォレンジックに活用します。
FortiGuardの脅威インテリジェンスフィードは、確認された不正トラフィックパターンに応じて検知シグネチャを自動的に更新します。
FortiSandboxは、不正が疑われるバイナリや共有オブジェクトファイルの分析を支援し、コンテナのセキュリティ態勢を補強します。
 上記の脆弱性ならびに関連するCVEにフォーティネットがどのように対処するかについては、2025年4月3日発行の「FortiGuard脅威シグナルレポート」を参照してください。

結論

 IngressNightmare(CVE‑2025‑1974および関連する脆弱性)は、安全なIngressの設定やAdmission Webhookでの厳格な制御の重要性を浮き彫りにしています。Ingressコントローラがパッチ未適用で過度に露出している場合、攻撃者は内部の監視ポイントを悪用することで、権限の低いポッドからでもクラスタ全体を侵害できます。

 幸い、パッチの適用やセキュリティの強化は簡単に行えます。

1. Ingress-NGINXを修正バージョン(v1.12.1以降またはv1.11.5以降)にアップグレードする。
2. Webhookサービスへのネットワークアクセスを遮断する。
コントローラのサービスアカウント権限を縮小する。

 継続的な可視性と検知は、強力な予防措置と密接に関係しています。Lacework FortiCNAPPフォーティネット セキュリティ ファブリックなどのツールは多層型防御を強化し、コンテナランタイムセキュリティとクラウド制御プレーンの両方に対応することができます。組織は脆弱性に関する最新情報を常に把握し、多層防御のアプローチを採用することで、IngressNightmareのような新しい脅威に対してKubernetesクラスタのレジリエンスを維持することができます。

参考文献とその他の資料

Kubernetes Advisory on CVE‑2025‑1974
Wiz Research Blog: IngressNightmare Technical Analysis
FortiGuard Threat Signal Report on Kubernetes IngressNightmare
Lacework FortiCNAPP Documentation & Guides

 本ブログをお読みいただきありがとうございました。このエクスプロイトの実態をさらに深く知るために、デモ動画も是非ご視聴ください。常に警戒を怠ることなく、クラスタの安全性を維持しましょう。

フォーティネットのソリューション

 FortiGuard Labsは、次の脆弱性を悪用した攻撃に対応するIPSシグネチャを提供しています。
 CVE-2025-1974: Kubernetes.Ingress.NGINX.Controller.Remote.Code.Execution

 組織が上記のエクスプロイトやその他のサイバーセキュリティ攻撃を受けていると思われる場合は、フォーティネットのグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

■関連サイト