Azure Security Center の脅威の防止機能により、IoT、App Service、オンプレミスの仮想マシンなど、サービスとしてのインフラストラクチャ (IaaS) レイヤーから Azure のサービスとしてのプラットフォーム (PaaS) リソースまで、さまざまなサービスで脅威を検知し、防止することができます。
Ignite 2019 では、Security Center での Azure Kubernetes Service (AKS) の脅威の保護サポートのプレビューや、Azure Container Registry (ACR) イメージの脆弱性評価のプレビューなど、クラウド プラットフォーム上の高度な脅威に対抗するための新しい脅威の保護機能を発表しました。
Azure Security Center と Kubernetes クラスター
このブログでは、Azure Security Center によって最近検出された Kubernetes クラスターに対する最近の大規模な暗号通貨マイニング攻撃について説明します。これは、お客様の Kubernetes クラスターを脅威から保護するのに役立つ、多くの Azure Security Center の例の 1 つです。
コンテナー化された環境での暗号マイニング攻撃は新しいものではありません。Azure Security Center では、コンテナー内部で実行されるさまざまなマイニング アクティビティを定期的に検出しています。通常、それらのアクティビティは、Web アプリケーションなどの脆弱なコンテナー内部で実行されており、既知の脆弱性が悪用されています。
最近、Azure Security Center により、特に Kubernetes 環境をターゲットにした新しい暗号マイニング キャンペーンが検出されました。この攻撃が他の暗号マイニング攻撃と異なる点は、その規模です。わずか 2 時間のうちに、悪意のあるコンテナーが数十の Kubernetes クラスターにデプロイされました。
このコンテナーでは、公開リポジトリからのイメージ (kannix/monero-miner) が実行されていました。 このイメージにより、非常に人気の高いオープン ソースの Monero マイニング ツールである XMRig が実行されます。
テレメトリによると、このコンテナーは kube-control
という名前の Kubernetes Deployment によってデプロイされました。
以下の Deployment 構成に示されているように、この場合、Deployment により、ポッドの 10 個のレプリカが各クラスターで実行されるようになっています。
さらに、暗号マイニング コンテナーをデプロイしたのと同じアクターが、Kubernetes のシークレットを含むクラスター リソースの列挙を実行していました。これにより、接続文字列、パスワード、その他のシークレットが公開され、横方向の移動が可能になる可能性があります。
興味深い点は、このアクティビティの ID が system:serviceaccount:kube-system:kubernetes-dashboard
であり、これがダッシュボードのサービス アカウントであることです。
この事実は、悪意のあるコンテナーが Kubernetes ダッシュボードによってデプロイされたことを示しています。また、リソースの列挙もダッシュボードのサービス アカウントによって開始されました。
攻撃者が Kubernetes のダッシュボードを利用する方法には、次の 3 つの選択肢があります。
- 公開されたダッシュボード: クラスターの所有者がダッシュボードをインターネットに公開し、攻撃者がそれをスキャンして見つけた。
- 攻撃者はクラスター内の 1 つのコンテナーにアクセスし、ダッシュボードへのアクセスにクラスターの内部ネットワークを使用した (これは Kubernetes の既定の動作で可能)。
- クラウドまたはクラスターの資格情報を使用した、ダッシュボードへの正当な閲覧。
問題は、上記の 3 つの選択肢のうち、どれがこの攻撃に関与していたかということです。この疑問に答えるには、Azure Security Center から得られるヒント、つまり Kubernetes ダッシュボードの公開に関するセキュリティ アラートを利用することができます。Azure Security Center は、Kubernetes のダッシュボードがインターネットに公開されていると警告を発します。このセキュリティ アラートが攻撃を受けたクラスターの一部で発せられたという事実は、ここでのアクセス ベクターがインターネットに公開されたダッシュボードであることを示唆しています。
この攻撃を Kubernetes の攻撃マトリクスで表現すると、次のようになります。
暗号通貨マイニング攻撃を回避する
これはどうすれば回避できるのでしょうか。
- Kubernetes のダッシュボードをインターネットに公開しない。ダッシュボードをインターネットに公開することは、管理インターフェイスを公開することを意味します。
- クラスター内で RBAC を適用する。RBAC が有効になっている場合、ダッシュボードのサービス アカウントは既定では非常に限られたアクセス許可を持ち、新しいコンテナーのデプロイを含むあらゆる機能が許可されません。
- 必要なアクセス許可のみをサービス アカウントに付与する。ダッシュボードを使用する場合は、ダッシュボードのサービス アカウントに必要なアクセス許可のみを適用するようにしてください。たとえば、ダッシュボードを監視のみに使用する場合は、サービス アカウントに "get" アクセス許可のみを付与します。
- 信頼できるイメージのみを許可する。信頼されたレジストリからの信頼されたコンテナーのみのデプロイを強制します。
さらに学ぶ
Kubernetes は、ソフトウェアをクラウドにデプロイして管理するための新しい標準になりつつあります。Kubernetes の豊富な経験を持つ人はほとんどおらず、多くの人が一般的なエンジニアリングと管理にのみ注目し、セキュリティ面を見落としています。コンテナーに焦点を合わせた攻撃対象領域が無防備な状態で攻撃者にさらされないように、Kubernetes 環境のセキュリティを慎重に構成する必要があります。Azure Security Center では次のものが提供されます。
- 検出と可視性: Security Center の登録済みサブスクリプション内のマネージド AKS インスタンスの継続的な検出。
- セキュア スコアの推奨事項: "ロールベースのアクセス制御を使用して Kubernetes Service クラスターへのアクセスを制限する" など、お客様が AKS のセキュリティのベスト プラクティスに従うのに役立つ実用的な項目。
- 脅威の検出: "特権コンテナーが検出されました" などのホストおよびクラスターベースの分析。
Azure Security Center の AKS サポートの詳細については、こちらのドキュメントをご覧ください。