Kubernetes の 90万インスタンスが露出:きわめて危険な状態のものも

Over 900,000 Kubernetes instances found exposed online

2022/06/28 BleepingComputer — 90万件以上のミスコンフィグレーションされた Kubernetes クラスタが、インターネット上で悪意のスキャンにさらされ、その中にはデータを暴露するサイバー攻撃にいたる脆弱性さえあることが判明した。Kubernetes は、オンライン・サービスのホスティングと、統一された API によるコンテナ化されたワークロードを管理するための、非常に汎用性の高いオープンソースのコンテナ・オーケストレーション・システムである。

このシステムにより、マルチクラウド環境での拡張性/柔軟性だけではなく、ポータビリティ/コスト/アプリ開発とシステム導入における時間の短縮などが実現されることで、広範囲で利用されている。しかし、Kubernetes が適切にコンフィグレーションされていない場合において、公開されるはずのない内部リソースやプライベート資産に対して、遠隔地の驚異アクターがアクセスする可能性が生じる。また、コンフィグレーションによっては、侵入者がコンテナから特権をエスカレートし、分離を解除し、ホストプロセスにピボットし、企業内ネットワークへのイニシャル・アクセスを行い、さらなる攻撃にいたる可能性もある。

暴露された Kubernetes が発見された

Cyble の研究者たちは、驚異アクターたちが採用するスキャン・ツールと検索クエリを用いて、インターネット上で露出した Kubernetes インスタンスを見つけるための演習を実施した。その結果、90万台という膨大な数の Kubernetes サーバが見つかり、その65% (58万5000台) は米国に、14% は中国に、9% はドイツに、6% はオランダ/アイルランドに存在することが分かった。

Countries with most exposed instances (Cyble)

公開されたサーバのうち、TCP ポートの公開件数上位は、100万件強の 443/231,200件の 10250/84,400件の 6443 であった。これらの公開クラスタにおいて、すべてが悪用可能なわけではなく、悪用可能なクラスタであっても、個々の構成によりリスクのレベルが異なることを強調しておく必要がある。

リスクが高いケース

公開されているインスタンスのうち、どの程度が重大なリスクとなり得るかを評価するために、Cyble は Kubelet API への認証されていないリクエストに対して返される、エラーコードを調べた。公開されているインスタンスの大半は、エラーコード 403 を返している。それは、認証されていないリクエストが禁止されており、通過できないため、それらに対して攻撃ができないことを意味する。

Error code 403 eliminates any attack potential
Error code 403 eliminates any attack potential (Cyble)

その一方では、約 5,000のインスタンスの中に、リクエストが認証されていないことを示す、エラーコード 401 で応答するものがある。

Error 401 in unaothorized requests
Error 401 in unauthorized requests (Cyble)

しかし、この応答は、潜在的な攻撃者に対してクラスタが機能しているというヒントを与えるため、エクスプロイトや脆弱性に基づく追加攻撃が試される可能性がある。また、ステータス・コード 200 を返す、799件の Kubernetes インスタンスの小さなサブセットがあったが、それは外部の攻撃者に完全にさらされていることを意味する。このような場合、脅威者は Kubernetes Dashboard 上のノードにパスワードなしでアクセスし、すべてのシークレットにアクセスし、アクションを実行することなどが可能になる。

Exposed Kubernetes Dashboard
Exposed Kubernetes Dashboard accessed without password (Cyble)

脆弱な Kubernetes サーバの数は僅かであるが、リモートで悪用できる脆弱性が発見されるだけで、はるかに多くのデバイスが攻撃にさらされるようになる。自身のクラスタが、この 799台のインスタンス、あるいは、それほど深刻ではない 5,000台のインスタンスの中に入らないようにするために、NSA とCISA の Kubernetes システムのセキュリティ強化に関するガイダンスを参照してほしい。

明確なイメージの取得

先月に The Shadowserver Foundation は、公開された Kubernetes インスタンスに関するレポートを発表し、200 HTTP エラーコードで応答する、ユニークな IP が 381,645個あることを発見した。

Cyble は BleepingComputer に対して、この大きな食い違いの理由は、彼らがオープンソースのスキャナと、大半の脅威アクターが利用できる単純なクエリを使用したのに対し、Shadowserver は IPv4 空間全体をスキャンし、新しい追加を監視していたためだと述べている。

Shadowserver は、「Kubernetes ブログで公開されている統計は、オープンソースのスキャナと製品として利用可能なクエリに基づくものだ。ブログで述べられているように、我々は Kubernetes/Kubernetes-master/KubernetesDashboard/K8/favicon などのハッシュと、ステータス・コード 200/403/401 に基づいて検索した」と説明している。

さらに Shadowserver は、「Kubernetes に関するブログにあるように、露出を見つけるために異なるアプローチをとっている。我々は、バージョン URI を使用して HTTP GET リクエストで毎日スキャンしている。ポート 6443 と 443 で、IPv4 空間のすべてをスキャンしている。JSON レスポンス 200 OK で応答する Kubernetes サーバのみを対象とし、そのレスポンスでバージョン情報を開示している」と述べている。

Cyble は、「Shadowserver のように、完全な IPv4 空間をスキャンぜず、オープンソースの知見に頼っているため、得られる結果は Shadowserver とは異なる」と述べている。

Cyble の数字は、それほど印象的ではないかもしれないが、これらの数字は、場所を特定し、攻撃するのが極めて容易な Kubernetes クラスタに対応しているという点で、とても重要なものである。

最近の Kubernetes に関する記事を調べたところ、1月25日の「Linux カーネルのバグが Kubernetes コンテナからの脱出を許す?」、2月4日の「Argo CD の脆弱性が FIX:Kubernetes アプリから機密情報が漏れてしまう」、3月18日の「Kubernetes を悪用するランサムウェア:Veritas の調査から見えてくるもの」といったものがありました。NSA とCISA がガイダンスを提供していることからしても、重要なプロダクトであることが伺いしれます。それにしても、スキャンの方法も様々なのですね。

%d bloggers like this: