2025年3月24日(月)、Kubernetes 向け Ingress NGINX Controller の admission controller コンポーネントに影響する一連の重大な脆弱性が発表されました。合計で5件の脆弱性が公表され、その中で最も深刻な脆弱性であるCVE-2025-1974(CVS 9.8)は、リモートコード実行(RCE)につながる可能性があります。この脆弱性の悪用は、Sysdig Secure または本記事で提供する Falco ルールで検知できます。
本ブログ公開時点では一般公開された PoC(概念実証コード)はありませんが、この脆弱性には十分な技術的詳細があるため、近いうちに開発され、すぐに入手可能になる可能性が高いでしょう。
脆弱性
CVE-2025-1974(CVSS スコア: 9.8)— 認証不要のリモートコマンド実行
CVE-2025-1098(CVSS スコア: 8.8)— サニタイズされていないアノテーションによる設定インジェクション
CVE-2025-1097(CVSS スコア: 8.8)— サニタイズされていないアノテーションによる設定インジェクション
CVE-2025-24514(CVSS スコア: 8.8)— サニタイズされていないアノテーションによる設定インジェクション
CVE-2025-24513 (CVSS スコア: 4.8)— パストラバーサル
Amazon EKS と Google GKE は、デフォルトでは NGINX Ingress Controller をインストールしません。
Ingress コントローラの仕組み
Ingress コントローラは Kubernetes インフラストラクチャのコンポーネントで、リバースプロキシおよびロードバランサとして機能します。Kubernetes のIngress から設定をルーティングルールへ変換し、外部トラフィックがクラスター内のサービスへ到達するためのエントリポイントを提供します。
Kubernetes 環境では、Ingress コントローラを実装するさまざまなソフトウェアやオープンソースプロジェクトが利用可能です。最も広く使われているものの一つが NGINX です。Kubernetes の Ingress オブジェクトがデプロイされるとすぐに、コントローラは検証用 admission webhook を用いて、適用前に最終的な設定を検証し、Ingress オブジェクトを NGINX のルーティング設定(または他の技術)へ変換します。しかし、NGINX 設定の安全でない取り扱いにより、細工された ingress リクエストが認証情報の流出や任意コマンド実行につながる可能性があります。
IngressNightmare の影響
デフォルトでは、NGINX Ingress Controller は公開されていません。しかし、攻撃者が Pod 上で足掛かりを得た場合、コントローラへアクセスできる可能性があります。コントローラが公開されるよう設定されている場合、リモートの攻撃者がこの脆弱性を悪用できる可能性があります。
NGINX admission controller サービスへ到達できる攻撃者は、脆弱性を悪用するために悪意のある ingress オブジェクトを作成する必要があります。ひとたび脆弱性が悪用されると、攻撃者は NGINX Ingress Controller の Pod から任意のコマンドを実行でき、そこには高い機密性を持つサービスアカウントがマウントされています。このようなサービスアカウントはクラスター全体のシークレット取得に利用され得るため、クラスターおよびサービスの侵害や認証情報の窃取につながる可能性があります。
CVE-2025-1974 の検知
報告された脆弱性の中で最も影響が大きいのは、認証不要のリモートコード実行を可能にするCVE-2025-1974です。この種の脆弱性は攻撃者が任意のコードを実行できるため、NGINX Ingress Controller の Pod に割り当てられた Kubernetes ロールにより、クラスター全体へ影響が及ぶ可能性があります。このロールは昇格された権限を持つため、攻撃者はこれを悪用してクラスター内で権限昇格を行う可能性があります
脆弱性を悪用するには、攻撃者は次の手順を実行する必要があります:
- NGINX Client Body Buffering を使用して、共有ライブラリを標的の Pod にアップロードする
ssl_engine load_moduleディレクティブを含む AdmissionReview リクエストを NGINX admission controller に送信し、NGINX に先ほどアップロードした共有ライブラリをロードさせる/procファイルシステムのファイルディスクリプタ参照を用いて共有ライブラリが実行されるようにする(特に、/proc/*/fd/*内を検索する)
このエクスプロイトは、NGINX Ingress コンテナにおいて /proc からロードされる共有ライブラリを監視することで検知できます。
Sysdig Secure のお客様には、Sysdig Runtime Threat Detection ポリシーに Potential IngressNightmare Vulnerability Exploitation ルールが自動的に追加されます。
Falco ユーザーは、以下のルールを適用してこの脆弱性の悪用を検知できます。
- rule: Potential IngressNightmare Vulnerability Exploitation
desc: このルールは、NGINX プロセスが ProcFS から共有ライブラリをロードすることで発生する、IngressNightmare 脆弱性(CVE-2025-1974)の悪用の可能性を検知します。この実行は、悪意ある攻撃者が ingress controller コンテナ内で他の任意コードを実行する前に脆弱性を悪用しようとしていることを示す可能性があります。
condition: evt.type in (mmap,mmap2) and proc.name contains "nginx" and fd.name startswith "/proc/" and fd.name contains "/fd/" and evt.arg.prot contains PROT_EXEC and container
output: 共有ライブラリ %fd.name を %container.image.repository の %proc.name が親 %proc.pname とともに %container.name 上でユーザー %user.name の下でロードし、実行パス %proc.exepath で IngressNightmare 脆弱性の悪用の可能性(proc.name=%proc.name proc.pname=%proc.pname fd.name=%fd.name proc.exepath=%proc.exepath proc.pexepath=%proc.pexepath gexepath=%proc.aexepath[2] ggexepath=%proc.aexepath[3] gggexepath=%proc.aexepath[4] proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline gcmdline=%proc.acmdline[2] ggcmdline=%proc.acmdline[3] gggcmdline=%proc.acmdline[4] gparent=%proc.aname[2] ggparent=%proc.aname[3] gggparent=%proc.aname[4] evt.type=%evt.type proc.args=%proc.args proc.pid=%proc.pid proc.cwd=%proc.cwd proc.ppid=%proc.ppid user.uid=%user.uid user.loginuid=%user.loginuid user.name=%user.name container.id=%container.id container.name=%container.name image=%container.image.repository:%container.image.tag)
priority: WARNING
tags: [container, MITRE, MITRE_TA0002_execution]
CVE-2025-1974 の緩和
以下のバージョンの Ingress NGINX Controller は、これらの脆弱性の影響を受けます:
< v1.11.0v1.11.0 - 1.11.4v1.12.0
修正は v1.11.5 および v1.12.1 でリリースされています。
組織はこの脆弱性の是正を最優先し、影響を受けるすべてのシステムに直ちにパッチを適用すべきです。是正には、環境内のIngress NGINX Controller の全インスタンスを最新バージョンへアップグレードすること、およびadmission webhook のエンドポイントが公開されていないことを確認することが含まれます。
結論
Ingress NGINX Controller は Kubernetes で最も人気のある ingress コントローラの一つで、Github で数千のスターを獲得しています。これらすべての脆弱性を組み合わせることで、攻撃者はリモートコード実行を達成し、Kubernetes クラスター全体の侵害に至る可能性があります。オープンソースの Falco を基盤とする Sysdig Secure を使用すれば、この種の攻撃を数秒で検知でき、迅速に対応を開始できます。
翻訳元: https://www.sysdig.com/blog/detecting-and-mitigating-ingressnightmare-cve-2025-1974