ingress-nginxの脆弱性CVE-2021-25746は、Kubernetesコミュニティによって発見されました。 攻撃者は、Ingressのmetadata.annotationsパラメーターを使用して、NGINX Ingressコントローラーの資格情報を取得できます。 資格情報を使用して、クラスター内のすべてのSecretsにアクセスできます。
CVE-2021-25746は高重症度と評価され、その共通脆弱性スコアリングシステム (CVSS) スコアは7.6である。
影響を受けるバージョン
1.2.0より前のingress-nginxバージョンは、この脆弱性の影響を受けます。
この脆弱性は、次のingress-nginxバージョンで修正されています。
v1.2.0-beta.0
v1.2.0
この脆弱性の詳細については、「 #8503」をご参照ください。
影響
Ingressを作成または変更する権限を持つユーザーは、networking.k8s.ioまたはextensions APIグループのIngressのmetadata.annotationsパラメーターを使用して、NGINX Ingressコントローラーの資格情報を取得できます。 資格情報を使用して、クラスターのAPIサーバーにアクセスし、クラスター内のすべてのSecretsにアクセスできます。
緩和
解決策1
次のコマンドを実行して、
kube-system名前空間のnginx-configuration ConfigMapを変更します。kubectl edit configmap -n kube-system nginx-configuration設定オプション
annotation-value-word-blocklistを追加します。詳細については、「annotation-value-word-blocklist」をご参照ください。
data: annotation-value-word-blocklist: "load_module,lua_package,_by_lua,location,root,proxy_pass,serviceaccount,{,},',\""NGINX Ingressコントローラーにプロビジョニングされているポッドを再起動します。
解決策2
Container Service for Kubernetes (ACK) のポリシーガバナンス機能を使用して、ACKCheckNginxAnnotationポリシーをデプロイします。 これにより、危険な設定を含むIngress変更リクエストを拒否できます。 詳細については、「ポリシーガバナンス機能の有効化」および「ACKの定義済みセキュリティポリシー」をご参照ください。
解決策3
管理者ではないAlibaba CloudアカウントからIngressを作成および変更する権限を取り消します。
修正
NGINX Ingressコントローラーのリリースノートをメモし、できるだけ早くNGINX Ingressコントローラーを更新することができます。 NGINX Ingressコントローラーのリリースノートの詳細については、「NGINX Ingressコントローラー」をご参照ください。