Black Hat Europe:Microsoft Azure Cosmos DB はカオスだという話

ChaosDB: Researchers Share Technical Details of Azure Flaw

2021/11/11 DarkReading — Black Hat Europe 2021:London:今日、Microsoft Azure Cosmos DB データベース・ソリューションに深刻な脆弱性を発見した研究者は、その欠陥の全範囲と、これまで未開示だった調査の詳細を明らかにした。それは、当初に公表されたよりも、はるかに広範におよぶものであることが判明した。

2021年8月に Wiz チームは、Azure クラウド・プラットフォームに、Cosmos DB データベースのリモートアカウント乗っ取りを可能にする、深刻な脆弱性が存在することを明らかにした。この、ChaosDB と名付けられた欠陥は、あらゆる Azure ユーザーが無許可で、他の顧客の Cosmos DB インスタンスにおける完全な管理者権限を得られるというものだ。その影響は、Fortune 500 の多くを含む、数千の企業におよぶという。

具体的には、データ・サイエンスでよく使われる、Jupyter Notebook というオープンソースの Web アプリの実装に、複数の欠陥が存在していた。この欠陥により、ネットワークへの無制限なアクセスが可能となり、他のユーザーの Cosmos DB アカウントの管理者アクセスを提供する、証明書や秘密鍵に幅広くアクセスできたと、研究者は述べている。

さらに悪いことに、Cosmos DB アカウントでは、Jupyter Notebook が自動的に有効になっていたが、このことはユーザーには明確にされていなかった。その結果、多くの顧客は、が知らず知らずのうちに、この脆弱性にさらされていた。

この問題を Wiz が Microsoft に報告したことで、48時間以内に修正プログラムが提供された。また、第三者やセキュリティ研究者が、この脆弱性を利用して顧客のデータにアクセスしたことも無いこともブログで確認している。また、一時的ではあるが、Jupyter Notebook の機能が停止されている。

しかし、Wiz のセキュリティ研究者である Sagi Tzadik と Nir Ohfeld は、今日の Black Hat の講演で、Chaos DB の全貌はこれだけではないと述べた。この脆弱性は、数千もの Azure 顧客のデータベースに、非特権ユーザーが完全かつ無制限にアクセスできるだけでは無いというのだ。

研究者たちは、Cosmos DB の各設定ミスを悪用し、それらを連鎖させることで、Microsoft 内部の Cosmos DB に関連する、数多くの機密情報や認証情報を取得することができまたと述べている。それにより、Cosmos DB に関連する 100以上の管理パネル (Service Fabric や Cosmos DB を動かすためのコンテナ・オーケストレーション・ツールなど) の管理者として認証することが可能になる。

今回の発見は、前例のないものだと、Nir Ohfeld は Dark Reading のインタビューで語っている。彼は、「Microsoft 以外で、クラウドを魔法のように機能させてしまう、このような管理アクセスを得た人はいない。それが、これまでに調査結果の全容を公開しなかった理由の一つであり、問題を軽減するための十分な時間を、Microsoft に与えるためだ。アクセスできた情報の中には、Cosmos DB に関するものだけでなく、Azure の仕組みに関するものもあった」と付け加えている。

この研究者は、「アカウントを乗っ取ってデータを操作しただけではなく、Cosmos DB サービスで管理者としての地位を得たことで、サービスにダメージを与えることができた。基盤となる Service Fabric インスタンスへのアクセスが得られたことによる影響は、顧客として、この脆弱性を防御することが、ほぼ不可能であったことを意味している」とブログで説明している

まるで不思議の国のアリス

Sagi Tzadik は Dark Reading のインタビューで、「調査を開始したとき、このチームは脆弱性を探していたわけではなかった。Cosmos DB の人気を考慮して、よくある設定ミスを探し出し、エラーを見つけるためのソリューションを見直していた。

その中で、Juputer Notebook コンテナが組み込まれていることを発見した。Juputer Notebook コンテナは、ターミナルへのアクセスが可能であり、さまざまなプログラミング言語で Cosmos DB インスタンスと対話できる。Jupyter ターミナルやデフォルトの Python3 Notebook を使用すると、非特権の “cosmosuser “としてコードが実行されることに気づいた。Python のコードを C# に切り替えたところ、そのコードが root 権限で実行されていることが分かった」と語っている。

Nir Ohfeld は、「Jupyter Notebook の機能を見て、我慢できなかった。攻撃者の立場なら、任意のコードを実行できる場所を見つけたら、それを確かめたくなる」と述べている。

Jupyter Notebook のローカル特権拡大の脆弱性を発見した後に、彼らは root 権限を使ってコンテナ内を調べ、どのネットワーク・リソースにアクセスできるかを確認した。その結果、禁止されている IP アドレスのリストを発見し、コンテナ上でローカルに設定されている IP アドレスを削除することで、無制限のネットワーク・アクセスを実現した。

その後、Ohfeld と Tzadik は、以前には禁止されていた IP アドレスの調査を続け、Azure VM などの拡張機能を管理する WireServer へのアクセスを発見した。その詳細については、本日に公開された別の詳細な技術記事で紹介されている。秘密の解明とCosmos DB 環境の探索を経て、最終的に 25個の Microsoft 証明書と、その秘密鍵にアクセスできたと述べている。

Tzadik は、「何か大きなことを、成し遂げようとしていると感じた瞬間だった。チームが使用した証明書は 6個だけだが、これらの証明書を使用することで、クラスタ内で稼働している Cosmos DB インスタンスの、Primary Key を平文で取得し、認証なしで顧客データベースを照会/操作できた。また、クラスタ内の Jupyter Notebook インスタンスの認証トークンを平文で取得し、顧客のノートブック・ストレージ・アカウントのパスワードを、平文で取得できまた。また、内部の Azure ストレージ・ブロブにアクセスすることで、Cosmos DB の基盤にもアクセスできた」と述べている。

研究者たちは、「1週間ほどの積極的な調査で、入手した 25個の証明書のうちの6個だけを使用することで、サービス全体を、ほぼ掌握できたと考えている。このサービスに取り組んでいた、Microsoft 社内の技術者と同等の権限を得た」と述べている。

Tzadik は、「特にクラウドでの隔離について、多くの教訓が得られた。私たちは、クラウドでの隔離が適切に機能すると思い込んでいたが、必ずしもそうではないことを学んだ」と述べている。

複数の顧客間でハードウェア・リソースを効率よく共有して、コストを抑えつつ利便性を高めるのがクラウドなら、クリティカルな防衛ラインを突破されると、他の顧客にまで被害が及んでしまうというのは、考えてみれば当たり前のことです。クラウド・ベンダーたちは、脆弱性の存在が認識されるのを嫌うでしょうが、自分たちだけでセキュリティを確立できるのかどうか、それを考えなければならない局面へと、差し掛かっているように思えます。