Azurescapeについて知っておくべきこと #aqua #コンテナ #セキュリティ #azure #Azurescape
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは「Aqua Security」社の技術ブログで2021年10月5日に公開された「 Azurescape: What You Need to Know 」の日本語翻訳です。
Azurescapeについて知っておくべきこと
マイクロソフトは先日、「Azurescape」と呼ばれるAzure Container Instances(ACI)サービスにセキュリティ上の脆弱性があることを公表しました。実際に悪用された事例は報告されておらず、幸いなことに、この脆弱性の影響を受けた Azure の顧客はいませんでした。この記事では、現在の環境へのリスクに関する疑問を解消するために、Azurescape を利用した場合の攻撃の構造と、クラウドネイティブ環境の効果的な多層防御戦略の意義を検証します。
ステップ1:攻撃の開始
ACI は、マイクロソフトが提供する Container-as-a-Service(CaaS)プラットフォームです。お客様は、このプラットフォームに直接コンテナをデプロイし、そのコンテナを実行する基盤となる VM や、コンテナを実行する Kubernetes クラスターには直接アクセスできません。
Azurescape を発見した研究チームが提供した詳細情報によると、攻撃者はまず自分のクラウドアカウントで悪意のあるコンテナを実行し、それを使って ACI が使用しているコンテナランタイムへの偵察を行います。
この例では、最初に発見された脆弱性は古いバージョンの runc であり、これが悪用されて基盤となる VM に侵入されました。この時点では、潜在的な攻撃者は、まだ自分の環境、つまり専用のリソーススペースにいることに注意してください。
ステップ2:クラスターへの偵察
攻撃者は、侵害された VM に保存されている認証情報を使用して、アクセス可能なマイクロソフトの認証情報を調査し、Azure が管理するシステムにアクセスできます。この行為は、クラウドプロバイダーのロギングツールや監視ツールによって検出される可能性が高いですが、他のテナントからは見えません。
ステップ3:特権トークンの取得
攻撃の次の段階では、侵害された VM のトラフィックログを読み取って認証トークンを見つけ、これによって攻撃者が他のノードでアクションを起こすことを許可します。
ここでも、他のテナントは攻撃者の行動を把握できません。
この脆弱性を利用しようとする行為を検知する方法
ユーザが同じクラスター内の他の顧客の行動を見ることはできないため、顧客は攻撃の初期段階を検知することはできなかったはずです。
しかし、初期段階の後、この脆弱性を利用した潜在的な攻撃に対して適用可能なセキュリティメカニズムは以下の通りです。
アプリケーションコンテナ内で実行される保護機能
今後、このような攻撃に対して、環境を抜け出した攻撃者がお客様のコンテナ内でコマンドを実行しようとしたり、kubectl exec などを使ってコンテナ内のファイルを読もうとしたりした場合、Aqua の Drift Prevention により、想定外の実行を止めることができます。Aqua の Drift Prevention を使えば、コンテナの意図した動作からの逸脱を(コンテナを停止せずに)ブロックできます。
クラウドログなどのクラウドサービスプロバイダーの機能により、コンテナからの異常なアクセスが表示される可能性があります。
繰り返しになりますが、この脆弱性によって影響を受けたお客様はいらっしゃいません。しかし、もし攻撃者がこの脆弱性をうまく利用して、他のお客様のコンテナでコマンドを実行し、さらにお客様のクラウド環境の他の部分にアクセスを拡大しようとしていた場合、クラウドプロバイダーの監視ツールがそのようなアクセスの試みを暴露していた可能性があります。
他に学ぶべきことは?
この脆弱性を実証した研究者は、時間をかけて特権を拡大するための段階的なプロセスを示しました。まず、悪意のあるコンテナで悪用する脆弱性を探し、次に認証情報を使用して特権を拡大し、最終的にトークンを見つけてさらに特権を拡大します。このような段階的なプロセスは、コンテナ環境とその上で動作するクラウドサービスアカウントの可視化と保護という観点から、クラウドネイティブ環境に特化した深層防御戦略の必要性を強く感じさせます。攻撃のキルチェーンに対応したクラウドネイティブ環境全体での徹底した防御のデモについては、「Anatomy of Cloud Native Attacks」のウェビナーをご覧ください。
被害に遭ったと思われる場合はどうすればいいですか?
マイクロソフトでは、影響を受けた可能性のある方に Service Health アラートで注意を喚起するとともに、以下のような予防的なセキュリティ対策を提案しています。
- 2021年8月31日以前に、プラットフォームにデプロイされた特権的な認証情報を失効させること。
コンテナグループの設定やシークレットを指定する一般的な場所は以下の通りです。- 環境変数
- シークレットボリューム
- Azure のファイル共有
- 以下のセキュリティベストプラクティスを参照してください。
- 標準的なセキュリティプラクティスの一環として、特権的な認証情報を頻繁にローテートしてください。
- Azure Service Health アラートを設定することで、セキュリティ関連の重要な通知を常に受け取ることができます。