脆弱性CVE-2020-8554は、Kubernetesコミュニティによって開示されています。 攻撃者は、この脆弱性を悪用して、ロードバランサーまたは外部IPアドレスを使用して中間者 (MITM) 攻撃を実行できます。 攻撃者は、サービスを作成し、ステータスフィールドまたはその他のフィールドを設定して、マルチテナントクラスター内の目的のポッドからのトラフィックを傍受できます。
影響範囲
すべてのKubernetesバージョンのクラスターが影響を受けます。 この脆弱性は、Kubernetesの設計におけるセキュリティ上の欠陥が原因です。 修正計画の詳細については、「課題97110」をご参照ください。
ACKクラスターがマルチテナントクラスターである場合、または信頼されていないユーザーによってデプロイされたアプリケーションを実行する場合、クラスターは攻撃に対して脆弱です。 クラスターが攻撃を受けているかどうかを確認するには、APIサーバーの監査ログを確認し、クラスターのサービスのstatusフィールドへのパッチ適用イベントを検索します。 詳細については、「詳細なログデータの表示」をご参照ください。
説明
マルチテナントクラスターでは、攻撃者は次の方法で目的のサービスに転送されるトラフィックを傍受できます。
- ClusterIPタイプのサービスを作成し、サービスのspecパラメーターのexternalIPフィールドを目的のIPアドレスに設定します。 このようにして、このIPアドレスに送信されるトラフィックは傍受され、作成されたサービスに転送されます。
- spec.loadBalancerIPフィールドを設定し、loadBalancerタイプサービスのstatus. LoadBalancer. ingress.ipフィールドにパッチを適用します。 このようにして、元のIPアドレスに送信されたトラフィックは傍受され、変更されたIPアドレスに転送されます。
予防と緩和
Kubernetesの設計に大きな変更が必要になる可能性があるため、Kubernetesコミュニティはこの脆弱性を修正するソリューションをリリースしていません。 溶液を放出するのにより長い時間がかかることがある。 この脆弱性による攻撃を防ぐために、次の対策を実施することを推奨します。
- 外部IPアドレスの使用を制限する:
- 外部IPアドレスの使用を認証および承認するには、承認Webhookを使用します。 Kubernetesが提供するアクセス許可webhookのソースコードとデプロイの詳細については、「externalip-webhook」をご参照ください。
- Open Policy Agent (OPA) Gatekeeperを使用して、使用できる外部IPアドレスの範囲を制限します。 詳細は、「gatekeeper」をご参照ください。 ConstraintTemplateおよびConstraintのサンプルテンプレートの詳細については、「externalip」をご参照ください。
- LoadBalancerタイプのサービスによるIPアドレスの使用を制限する:
- サービスのstatusフィールドにパッチを適用する際の権限を最小限に抑えます。
- また、LoadBalancerタイプのサービスで使用できる外部IPアドレスを制限するために、アドミッションWebhookまたはOPA Gatekeeperを使用することもできます。