Kubernetes クラスターに対する大規模な暗号通貨マイニング攻撃の検出

2020年4月8日 に投稿済み

Security Research Software Engineer, Azure Security Center

Azure Security Center の脅威からの保護機能により、 Azure のサービスとしてのインフラストラクチャ (IaaS) レイヤーからサービスとしてのプラットフォーム (PaaS) リソース (例: IoT、App Service、オンプレミスの仮想マシン) までの幅広いサービスで脅威を検出し、これを防ぐことができます。

Ignite 2019 において、マイクロソフトは、Security Center での Azure Kubernetes Service (AKS) の脅威からの保護のサポートのプレビュー、Azure Container Registry (ACR) イメージの脆弱性評価のプレビューなど、クラウド プラットフォームにおける高度な脅威に対処する新しい脅威からの保護機能 (英語) について発表しました。

Azure Security Center と Kubernetes クラスター 

このブログでは、Azure Security Center によって最近検出された、Kubernetes クラスターに対する最新の大規模な暗号通貨マイニング攻撃について説明します。今回の内容は、Azure Security Center が Kubernetes クラスターを脅威から保護するのに役立つことを示す 1 例です。

コンテナー化された環境における暗号通貨マイニング攻撃は目新しいものではありません。Azure Security Center では、コンテナー内で行われている幅広いマイニング アクティビティが定期的に検出されます。通常、これらのアクティビティは、攻撃の対象となる既知の脆弱性が存在する Web アプリケーションなどの脆弱なコンテナー内で行われています。

最近、Azure Security Center で、Kubernetes 環境を明確に狙った新しい暗号通貨マイニング攻撃が検出されました。この攻撃が他の暗号通貨マイニング攻撃と異なる点はその規模です。悪意のあるコンテナーがわずか 2 時間のうちに数十もの Kubernetes クラスターに展開されていました。

このコンテナーは、パブリック リポジトリ kannix/monero-miner からイメージを実行していました。このイメージは、XMRig と呼ばれる非常に人気の高いオープン ソースの Monero マイナーを実行します。

このコンテナーが kube-control と呼ばれる Kubernetes Deployment (英語) によって展開されていたことがテレメトリに示されました。

以下の Deployment の構成で示されているように、今回のケースでは、Deployment が各クラスターでポッドの 10 個のレプリカを動作させています。

KB cluster2


また、暗号通貨マイニング コンテナーを展開した同じアクターが Kubernetes シークレットを含むクラスター リソースを列挙していました。これにより、接続文字列、パスワード、およびその他のシークレットが漏えいし、横断的侵害を招くおそれがあります。

興味深いのは、このアクティビティの ID が system:serviceaccount:kube-system:kubernetes-dashboard という点です。これは、ダッシュボードのサービス アカウントです。
この事実は、悪意のあるコンテナーが Kubernetes ダッシュボードによって展開されたことを示しています。リソースの列挙も、ダッシュボードのサービス アカウントによって開始されていました。

攻撃者が Kubernetes ダッシュボードを利用する方法として、以下の 3 つのオプションが挙げられます。

  1. ダッシュボードの公開: クラスターの所有者がダッシュボードをインターネットに公開し、攻撃者がスキャンによってそれを見つける。
  2. 攻撃者がクラスター内の 1 つのコンテナーへのアクセス権限を入手し、クラスターの内部ネットワークを利用してダッシュボードにアクセスする (Kubernetes の既定の動作によりこれが可能)。
  3. クラウドまたはクラスターの資格情報を用いて正当な方法でダッシュボードを閲覧する。

では、上記の 3 つのオプションのうち、どのオプションがこの攻撃に用いられたのでしょうか。この質問の答えは、Azure Security Center が提供するヒントを用いて知ることができます。そのヒントとは、Kubernetes ダッシュボードの公開に関するセキュリティ アラートです。Azure Security Center は、Kubernetes ダッシュボードがインターネットに公開されるとアラートを出します。このセキュリティ アラートが攻撃を受けたクラスターの一部で出されていました。この事実は、アクセス経路がインターネットに公開されたダッシュボードであることを示しています。

Kubernetes の攻撃マトリックス (英語) でこの攻撃を表すと以下のようになります。

kb cluster3 

暗号通貨マイニング攻撃の回避

この攻撃を回避するにはどうすればよいでしょうか。

  1. Kubernetes ダッシュボードをインターネットに公開しない: ダッシュボードをインターネットに公開することは、管理インターフェイスを公開することと同義です。
  2. クラスターで RBAC を適用する: RBAC を有効にすると、既定でダッシュボードのサービス アカウントに付与されるアクセス許可が非常に限られたものになり、新しいコンテナーの展開などの機能を一切使用できなくなります。
  3. サービス アカウントに必要なアクセス許可のみ付与する: ダッシュボードを利用する場合、ダッシュボードのサービス アカウントに必要なアクセス許可のみ適用するようにします。たとえば、ダッシュボードを監視目的のみで使用する場合、サービス アカウントへ "取得" アクセス許可のみ付与します。
  4. 信頼できるイメージのみ許可する: 信頼性のあるレジストリーから、信頼できるコンテナーのみの展開を適用します。

詳細

Kubernetes は、瞬く間に、クラウドでのソフトウェアの展開および管理の新しい標準になりつつあります。Kubernetes の豊富な経験を持つ人はごくわずかであり、一般的なエンジニアリングや管理に焦点が置かれることが多く、セキュリティの側面が見過ごされています。Kubernetes 環境を慎重に構成してセキュリティを実現し、攻撃対象領域へのドアを開けたままにしないことに焦点が置かれているコンテナーが攻撃者に対して公開されることがないよう注意する必要があります。Azure Security Center は以下の機能を提供します。

  1. 検出と視覚化: Security Center の登録済みサブスクリプション内のマネージド AKS インスタンスの継続的な検出
  2. セキュア スコアの推奨事項: お客様のセキュア スコアの一部として、AKS のセキュリティのベスト プラクティスの遵守を支援する実用的な項目 (例: "役割ベースのアクセス制御を使用して、Kubernetes Service Cluster へのアクセスを制限することを推奨します")
  3. 脅威検出: ホストおよびクラスターベースの分析 (例: "特権コンテナーが検出されました")

Azure Security Center の AKS サポートに関する詳細については、こちらのドキュメントを参照してください。