Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2020年12月23日にKaizhe Huang が投稿したブログ(https://sysdig.com/blog/detect-cve-2020-8554-using-falco/)を元に日本語に翻訳・再構成した内容となっております。
CVE-2020-8554は、特にマルチテナントのKubernetesクラスターに影響を与える脆弱性です。潜在的な攻撃者がサービスやポッドを作成したり編集したりすることができれば、クラスタ内の他のポッドやノードからのトラフィックを傍受できる可能性があります。
ClusterIP サービスを作成して spec.externalIPs フィールドを設定できる攻撃者は、その IP へのトラフィックを傍受することができます。さらに、LoadBalancerサービスのステータスにパッチを当てることができる攻撃者は、status.loadBalancer.ingress.ipを設定して同様の効果を得ることができます。一般的に、これは特権的な操作とみなされ、一般的にはユーザーに許可されるべきではありません。
この問題は、ユーザー側の変更なしには緩和できない設計上の欠陥です。
中(Medium)
この脆弱性を悪用しようとする試みを検出することは、攻撃を防止または停止するために非常に重要です。Falcoを使用して、ホストレベルとコンテナレベルの両方で悪意のある活動を検出することができます。Falcoは、コンテナとKubernetesのランタイム脅威検出のためのCNCFオープンソースプロジェクトです。
Falcoの利点の1つは、その強力で柔軟なルール言語を活用することにあります。その結果、Falcoはカスタマイズ可能なルールのセットによって定義された異常な動作を発見した場合、セキュリティイベントを生成します。一方、Falcoには、アウトオブザボックスですぐに使える検知ルールがいくつか用意されています。
誰かが外部IPを使ってクラスタ型サービスを作成しようとしている場合に、Falcoを使ってどのように検出できるか見てみましょう。
前述の通り、CVE-2020-8554の脆弱性はKubernetesの設計上の欠陥によるものです。これは、サービスの作成/パッチ権限を持つユーザーが、ネットワークトラフィックを外部IPアドレスにリダイレクトすることを可能にします。ほとんどの場合、内部通信のみに使用されるサービスを作成すると、このサービスにプライベートIPアドレスが割り当てられてしまいます。
これはプライベートIPアドレスなので、Kubernetesクラスタ内では誰もこのようなサービスにアクセスできません。ただし、ユーザはこのサービスに関連付けられた外部IPを設定することができます。
実際、これは合法的なユースケースです。しかし、悪意のあるユーザが中間者攻撃を行うために悪用される可能性があります。
Falcoのルール 外部IPで作成/パッチされたKubernetesサービスを検出する
以下の Falco ルールを使用すると、CVE-2020-8554 の影響を受けているかどうかを検出することができます。
- macro: service_with_external_IP condition: (jevt.value[/requestObject/spec/externalIPs] exists and jevt.value[/requestObject/spec/externalIPs] != "<NA>") - rule: Create/Update ClusterIP Service with External IP desc: Detect an attempt to modify a ClusterIP type service with external IP assigned (CVE-2020-8554)" condition:kevt and service and kmodify and jevt.value[/responseObject/spec/type]=ClusterIP and service_with_external_IP output: ClusterIP type service created/updated with external IP assigned (user=%ka.user.name service=%ka.target.name ns=%ka.target.namespace operation=%ka.verb ports=%ka.req.service.ports external IP=%jevt.value[/requestObject/spec/externalIPs]) priority: WARNING
source: k8s_audit
誰かが外部IPアドレスでサービスを作成したり、パッチを当てたりすると、Sysdig Secure(Falco上に構築されている)では、セキュリティイベントの出力は次のようになります。
外部IPアドレスを使ってサービスを作成することは合法的なユースケースですが、それはまだ稀であるか、特定のサービスに限定されています。DevOpsチームは、外部IPアドレスで作成/パッチが適用されたすべてのサービスを監視する必要があります。また、Open Policy Agent (OPA) のようなツールを使って、そのような活動をブロックすることもできます。
CVE-2020-8554は設計上の欠陥による修正策がない脆弱性なので、適切なセキュリティツールを使ってKubernetesクラスターをより近くで監視する必要があることを覚えておいてください。
これらのソリューションが脆弱性の緩和にどのように役立つかについては、Falco と Sysdig Secure をチェックしてください。