NGINX Ingress Controller for Kubernetes のゼロデイ脆弱性:緩和策が公表

Urgent: New Security Flaws Discovered in NGINX Ingress Controller for Kubernetes

2023/10/30 TheHackerNews — NGINX Ingress controller for Kubernetes に存在する、以下の3件の深刻なゼロデイ脆弱性が公開された。

  • CVE-2022-4886 (CVSS : 8.8): Ingress-nginx パスのサニタイズをバイパスし、ingress-nginx コントローラーの認証情報を取得する可能性。
  • CVE-2023-5043 (CVSS : 7.6):Ingress-nginx のアノテーション・インジェクションによる任意のコマンド実行にいたる可能性。
  • CVE-2023-5044 (CVSS : 7.6):nginx.ingress.kubernetes.io/permanent-redirect アノテーション経由のコード・インジェクションの可能性。


Kubernetes セキュリティ・プラットフォームである ARMO の CTO Ben Hirschberg は、「脆弱性 CVE-2023-5043/CVE-2023-5044 の悪用により、Ingress オブジェクトのコンフィグレーションの制御に成功した攻撃者は、任意のコードを Ingress プロセスに注入し、クラスタから秘密の認証情報を盗むことが可能になる」と述べている。

また、脆弱性 CVE-2022-4886 は、”spec.rules[].http.paths[].path” フィールドにおける検証の欠如に起因しており、Ingress オブジェクトにアクセス可能な攻撃者に対して、Ingress コントローラからの Kubernetes API 認証情報の抽出を許してしまう。

Hirschberg は、「Ingress オブジェクトにおいて、受信 HTTP パスと内部パスの間のルーティングが定義される。しかし、脆弱なアプリケーションでは、内部パスの有効性のチェックが不適切である。そのため、API サーバに対する認証で必要な、クライアント認証情報であるサービス・アカウント・トークンなどの内部ファイルを指すことが可能になってしまう」と指摘している。

パッチが提供されるまでの緩和策として、無効な文字を含む Ingress オブジェクトの作成を防止し、追加の制限の強制が推奨されている。具体的には、”strict-validate-path-type” オプションを有効化し、”–enable-annotation-validation” フラグを設定する方法などが挙げられている。

ARMO によると、NGINX をバージョン 1.19 に更新し、コマンドラインで “–enable-annotation-validation” 設定を追加することで、CVE-2023-5043/CVE-2023-5044 は解決されるとのことだ。

Hirschberg は、「これらの脆弱性の性質は異なるが、すべて同じ問題に根ざしている。Ingress コントローラーは設計上、TLS シークレットと Kubernetes API にアクセスするための、高い特権範囲を持つ処理に対応する。それに加えて、Ingress コントローラは、パブリックなコンポーネントとしてインターネットに露出するケースが多い。そのため、外部からのトラフィックが Ingress コントローラを経由して、クラスタに侵入するという極めて脆弱な側面が生じる」と述べている。