Alibaba Cloudは、Container Service for Kubernetes (ACK) のkube-controller-managerの脆弱性CVE-2020-8555を修正しました。 脆弱性CVE-2020-8555は、kube-controller-managerのサーバー側要求偽造 (SSRF) 脆弱性です。 許可されたユーザーは、サーバー側アプリケーションの要求を偽造して、マスターノードのホストネットワーク内の保護されていないエンドポイントから任意の情報を取得できます。 このトピックでは、この脆弱性に対する影響、解決策、および予防策について説明します。
この脆弱性の共通脆弱性スコアリングシステム (CVSS) スコアは3.0です。 詳細については、CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:Nをご参照ください。 リスクレベルは中程度です。
影響スコープ
- 不正アクセスを許可するkube-apiserverのローカルポートが開いています。
- 保護されていないサービスは、マスターノードのホストネットワークに公開されます。
- 悪意のあるユーザーには、Kubernetesクラスターでポッドを作成するか、StorageClassオブジェクトを書き込む権限があります。
- kube-controller-manager v1.16.0 ~ v1.16.8
- kube-controller-manager<v1.15.11
影響を受けるボリュームタイプは、GlusterFS、Quobyte、StorageFS、およびScaleIOです。
修正
許可されたユーザーがこの脆弱性を悪用して、脆弱なボリューム (GlusterFS、Quobyte、StorageFS、ScaleIO) がマウントされたポッドを作成したり、KubernetesクラスターにStorageClassオブジェクトを書き込んだりする可能性があります。 ユーザーは、マスターノードのホストネットワークに公開されているサービスにGETまたはPOST要求を送信できます。 このように、ユーザは、許可なくホストネットワークをプローブして攻撃することができる。 たとえば、攻撃者がkube-apiserverの保護されていないポート8080を使用してKubernetes Secretsを取得する可能性があります。
デフォルトでは、保護されていないポート8080はACKクラスターに対して閉じられます。 上記の操作を実行するには、すべてのResource Access Management (RAM) ユーザーにロールベースのアクセス制御 (RBAC) 権限を付与する必要があります。 デフォルトでは、クラスターを作成するユーザー以外のすべてのRAMユーザーは、ポッドの作成やStorageClassオブジェクトの書き込みを許可されていません。 マスターノードのホストネットワークで保護されていないサービスからのデータリークを防ぐには、pr.k8s.io/89794に記載されている対策を実装します。 この脆弱性を修正するために、新しいバージョンのkube-controller-managerも提供されています。
予防と緩和
- kube-apiserverで保護されていないポート8080を開かないでください。 デフォルトでは、このポートはACKクラスターで閉じられています。
- マスターノードのホストネットワークに対して開いているサービスに対してリクエスト認証が有効になっているかどうかを確認します。 データリークの原因となる保護されていないサービスを見つけて無効にします。
- 信頼できないユーザーにポッドの作成やStorageClassオブジェクトの書き込みを許可しないでください。