2020/06/05

VMware Cloud サーバが乗っ取られる脆弱性

2020 年 6 月 5 日 Trevor Collins 著

今週初め、Citadelo 社は VMware Cloud で見つかった脆弱性を公開しました。小規模なクラウド事業者は、仮想サーバをサポートするために VMware Cloud を使用しており、ソフトウェア内の Director モジュールを介して環境を管理できるソフトウェアです。Citadelo 社は、この管理ソフトウェアにリモートからの攻撃によりコードが実行される脆弱性を発見しました。また、発見された脆弱性を悪用することで、以下が可能であることを指摘しています。

  • インフラストラクチャに割り当てられた内部システムデータベースのコンテンツを表示すること。これには、顧客のパスワードハッシュも含まれます。
  • システムデータベースを変更して、Cloud Director の異なる組織に割り当てられた外部の仮想マシン(VM)を盗むこと。
  • 「組織管理者」(通常は顧客アカウント)の権限から、すべてのクラウドアカウント(組織)へのアクセス権を持つ「システム管理者」の権限に、アカウントのハッシュを変更して昇格すること。
  • Cloud Director へのログインページを変更し、システム管理者アカウントを含む他の顧客のパスワードを平文で取得すること。
  • フルネーム、メールアドレス、IP アドレスなど、顧客に関連するその他の機密データを読むこと。

Citadelo 社は、特別に細工したメッセージを送信して、この脆弱性を攻撃できることを発見しました。細工されたこのメッセージは、HTTP リクエストを使用してサーバに SMTP ドメイン名を追加して構成されています。サーバはこのメッセージにはエラーを返しますが、サーバ側でリクエストの一部が評価され、さらにサーバ側で処理していました。Java ベースのサーバには、悪意のある Java コードが実行されないようにするセキュリティの仕組みがありますが、研究者たちは、通常のセキュリティコントロールが適用されない新しいインスタンスや「クラス」を作成することで、回避しました。元のクラスからコードをリンクするために別の Java 関数を使用することで、研究者は Java 環境を完全に制御できるようになりました。Java を介してサーバに 5 秒間スリープするように指示するシェルコマンドを送ったところ、直ちに実行されました。

しかし、リモートからサーバでの任意のコードを完全に実行できるようにしても、環境内でできることは限られています。VMware Cloud は VM インスタンスを暗号化しているため、直接アクセスすることはできないためです。そこで研究者は、直接 SQL データベースを更新し、管理者のハッシュ化されたパスワードを把握しているパスワードに変更し、この制限を回避することに成功しました。この時点で管理者としてログインしており、すべての仮想サーバを完全に管理できるようになります。また、悪意ある攻撃者はリモートからコードを実行する脆弱性を利用してサーバでコマンドを実行しますが、この場合、ハッカーは VMware Cloud インスタンスにアクセスするためのアカウントが必要です。クラウドプロバイダが無料のトライアルアカウントを発行していれば、誰でもアカウントを作成してこの脆弱性を悪用できます。

リモートから任意のコマンドが実行されることが懸念されることは間違いありませんが、攻撃者が、仮想サーバの別のインスタンスにアクセスしてデータを侵害する恐れがあり、この脆弱性はさらに深刻なものになっています。VMware は 4 月と 5 月にソフトウェアの アップデートを提供しています。9.7.0.5、10.0.0.2、9.1.0.4、9.5.0.6 またはそれ以降のバージョンにアップデートしてください。アップデートができない場合は、 こちら(英語)の手順 に従って回避策を実行できます。興味深いことに、この回避策から、あるファイルの単純なパーミッションがこの問題の原因であることがわかります。