Microsoft Azure クロス・アカウント・コンテナ乗っ取りの脆弱性が FIX

Microsoft fixes bug letting hackers take over Azure containers

2021/09/09 BleepingComputer — Microsoft は、Azure Container Instances に存在する、Azurescape と呼ばれる脆弱性を修正した。この脆弱性により、プラットフォーム上の他の顧客が所有するコンテナを、悪意のコンテナが乗っ取ることが可能になる。Azurescape を悪用した攻撃者は、他のユーザーのコンテナでコマンドを実行し、プラットフォームにデプロイされている、すべてのデータにアクセスすることができるようだ。

顧客データにリスクが生じる

Microsoft は、Azurescape の影響を受ける可能性のある顧客に対して、8月31日以前にプラットフォームにデプロイしたコンテナの、特権的な認証情報を変更するよう通知した。同社は、この脆弱性の悪用による、顧客データへのアクセス攻撃の兆候が見られなかったことで、慎重を期して警告を送ったとしている。

Microsoft の Azure Container Instances (ACI) とは、パッケージ化されたアプリケーション (コンテナ) を、エンタープライズがクラウド上に展開するためのクラウド・サービスである。コンテナに馴染みのない方のために説明すると、コンテナには、特定のアプリケーションを実行するために必要な、実行ファイル/依存ファイルなどの、すべてのファイルが含まれ、また、ディストーション/デプロイメントを容易にするために、単一のパッケージに格納されている。コンテナがデプロイされると、ACI は、そのコンテナを他の実行中のコンテナから分離し、メモリ空間の共有や相互作用を防ぐことになる。

古いコードが問題となっていた

Palo Alto Networks の研究者たちが Azurescape を発見し、Microsoft に報告した。同社の Yuval Avrahami は、本日のレポートで、この脆弱性に関する技術的な詳細を述べ、「悪意のユーザーが、ACI をホストするマルチテナントの Kubernetes クラスタを侵害できる」と指摘している。Avrahami によると、この問題の発見は、ACI が約5年前にリリースされたコードを使用しており、そのコードがコンテナ・エスケープ・バグに対して脆弱であることを、発見したところから始まっている。

研究者たちは、「RunC v1.0.0-rc2 は、2016年10月1日にリリースされ、少なくとも2つのコンテナ・エスケープの CVE に対して脆弱だった。2019年になり、これらの脆弱性の1つである CVE-2019-5736 を分析した」と説明している。CVE-2019-5736 を悪用することで、コンテナを抜け出し、基盤となるホストの Kubernetesノード上で、昇格した特権で任意のコードを実行することが可能になった。研究者は、他のコンテナへの不正アクセスを得るためのステップを、次のようにまとめている。

・ノード上で、Kubelet ポート (Port 10250) のトラフィックを監視し、Authorization ヘッダーに JWT トークンを含むリクエストを待つ
・az container exec を発行して、アップロードされたコンテナ上でコマンドを実行する。ブリッジポッドは、侵害されたノード上の Kubelet に対して exec リクエストを送信する。
・対象となるノード上で、リクエストの Authorization ヘッダからブリッジ・トークンを抽出し、それを使って API サーバ上で Shell をポップする。

Palo Alto Networks は、この攻撃を実証するために、攻撃者がコンテナからエスケープし、クラスタ全体の管理者権限を、取得する様子を撮影したビデオを公開している。

ずいぶんと前の脆弱性だと思い、手元のデータベースで CVE-2019-5736 を調べてみたら、以下のような結果となりました。2019/02/12 〜 2019/12/26 にかけて、いろいろな製品に影響をおよぼしていたことが分かります。ただ、この期間において、Microsoft による検知は報告されていませんでした。

[ CVE-2019-5736 ] が含まれるレポート 一覧
2019/12/26: IBM Watson Studio Local – Kubernetes
2019/07/27: IBM Cloud Private for Data – Runc
2019/07/09: Ubuntu – Docker
2019/05/21: IBM PowerKVM – Docker
2019/03/07: IBM API Connect – Kubernetes
2019/03/06: IBM Cloud Kubernetes Service – Runc
2019/03/01: IBM Cloud Private – Docker
2019/02/26: Red hat Container Development Kit – Runc
2019/02/16: VMware – Runc
2019/02/16: Cisco – Runc
2019/02/13: Red hat Enterprise Linux 7 Extras – Docker
2019/02/12: Amazon Linux AMI – Runc
2019/02/12: Red hat Enterprise Linux 7 – Runc

%d bloggers like this: