Ingress-nginxの脆弱性CVE-2025-1974: 知っておくべきこと
本日、ingress-nginxのメンテナーは、攻撃者がKubernetesクラスターを乗っ取ることを容易にする可能性のある、一連の重大な脆弱性に対するパッチをリリースしました: ingress-nginx v1.12.1およびingress-nginx v1.11.5。 ingress-nginxは、Kubernetes管理者の40%超が利用しています。 もしあなたがそれに該当する場合は、ユーザーとデータを保護するために直ちに対応を行ってください。
背景
Ingressは、ワークロードPodを外部に公開して活用できるようにする、Kubernetesにおける従来の機能です。 実装に依存しない方法で、Kubernetesユーザーはアプリケーションをネットワーク上にどのように公開するかを定義できます。 次に、Ingressコントローラーがその定義に従い、ユーザーの状況やニーズに応じてローカルまたはクラウドのリソースを構成します。
さまざまなクラウドプロバイダーやロードバランサー製品に対応するために、多くのIngressコントローラーが利用可能です。 Ingress-nginxは、Kubernetesプロジェクトが提供するソフトウェアベースのIngressコントローラーです。 その柔軟性と使いやすさから、ingress-nginxは非常に人気があり、Kubernetesクラスターの40%超で導入されています!
Ingress-nginxは、Ingressオブジェクトの要件を、強力なオープンソースのWebサーバーデーモンであるnginxの設定に変換します。 その後、nginxはこの設定を用いて、Kubernetesクラスター内で稼働しているさまざまなアプリケーションへのリクエストを受け付け、ルーティングします。 これらのnginx設定パラメーターを適切に取り扱うことは極めて重要です。 なぜなら、ingress-nginxはユーザーに対して高い柔軟性を提供する必要がある一方で、nginxに対して不適切な動作を意図的または過失により誘発させないようにしなければならないためです。
本日修正された脆弱性
本日修正されたingress-nginxの脆弱性のうち4件は、特定のnginx設定の取り扱いに関する改善です。 これらの修正がない場合、特別に細工されたIngressオブジェクトによってnginxが不正な動作を引き起こす可能性があり、たとえば、ingress-nginxにとってアクセス可能なSecretの値が漏洩するなどの事態が発生します。 デフォルトでは、ingress-nginxはクラスター全体のSecretにアクセスできるため、Ingressを作成する権限を持つユーザーやエンティティがクラスター全体を乗っ取る事態につながるおそれがあります。
本日公開された脆弱性のうち最も深刻なものは、CVE-2025-1974です。 この脆弱性は9.8 CVSSと評価されており、ingress-nginxのValidating Admission Controller機能を通じて、Podネットワーク上の任意のエンティティが設定インジェクションの脆弱性を悪用できるというものです。 このため、通常であればクラスター内にIngressオブジェクトを作成する(比較的高い権限が必要な)操作が前提となる攻撃が、大幅に容易かつ危険なものになります。 さらに、今回の他の脆弱性と組み合わさることで、CVE-2025-1974により、Podネットワーク上に存在する任意のものが、認証情報や管理権限なしにKubernetesクラスターを乗っ取る可能性が高まります。 多くの一般的なシナリオでは、PodネットワークはクラウドVPC内のすべてのワークロード、あるいは企業ネットワークに接続しているすべてのユーザーからアクセス可能です! これは、非常に深刻な状況です。
本日、これら5件の脆弱性すべてに対する修正を含むingress-nginx v1.12.1およびingress-nginx v1.11.5をリリースしました。
次のステップ
まずは、クラスターでingress-nginxが使用されているかどうかを確認してください。
多くの場合、クラスター管理者権限を用いてkubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
を実行することで確認できます。
ingress-nginxを使用している場合は、直ちにこれらの脆弱性への対応を計画してください。
最も効果的かつ簡単な対処方法は、ingress-nginxの新しいパッチリリースにアップグレードすること です。 本日リリースされたパッチを適用することで、5件すべての脆弱性が修正されます。
すぐにアップグレードできない場合は、ingress-nginxのValidating Admission Controller機能を無効化することで、リスクを大幅に軽減することが可能です。
-
ingress-nginxをHelmでインストールしている場合
- Helmの設定値
controller.admissionWebhooks.enabled=false
を設定して再インストールしてください。
- Helmの設定値
-
ingress-nginxを手動でインストールしている場合
ingress-nginx-admission
という名前のValidatingWebhookConfigurationを削除してください。ingress-nginx-controller
のDeploymentまたはDaemonSetを編集し、controllerコンテナの引数から--validating-webhook
を削除してください。
CVE-2025-1974に対する緩和策としてValidating Admission Controller機能を無効化した場合は、アップグレード後に必ず再び有効化することを忘れないでください。 この機能は、不正なIngress設定が適用される前に警告を出すことで、ユーザー体験を向上させる重要な役割を担っています。
結論、謝辞、およびさらなる情報
本日発表されたCVE-2025-1974を含むingress-nginxの脆弱性は、多くのKubernetesユーザーとそのデータに対して重大なリスクとなります。 ingress-nginxを利用している場合は、自身の安全を守るために直ちに対策を講じてください。
今回の脆弱性を適切に報告し、Kubernetesセキュリティ対応チーム(SRC)およびingress-nginxメンテナー(Marco Ebert氏、James Strong氏)と連携して効果的な修正に尽力いただいたWizのNir Ohfeld氏、Sagi Tzadik氏、Ronen Shustin氏、Hillai Ben-Sasson氏に感謝いたします。
ingress-nginxの今後の保守および将来に関する詳細は、このGitHub issueをご覧いただくか、James氏およびMarco氏によるKubeCon/CloudNativeCon EU 2025の講演にご参加ください。
本記事で取り上げた各脆弱性の詳細については、以下の然るべきGitHub Issueをご参照ください: CVE-2025-24513、CVE-2025-24514、CVE-2025-1097、CVE-2025-1098、CVE-2025-1974。
このブログ記事は、ハイパーリンクを更新するために2025年5月に改訂されました。