著者: Niranjan Pokhrel
公開されている重大なVMware vCenter Serverの脆弱性を、隔離された自宅ラボで再現・文書化する独立した研究プロジェクト。脆弱性クラス、攻撃経路、防御策を理解することを目的とする。
| CVE | CVE-2021-21972 |
| CVSSv3基本値 | 9.8(緊急) |
| ベンダー勧告 | VMSA-2021-0002 |
| 影響を受ける製品 | VMware vCenter Server 6.5 / 6.7 / 7.0 |
| 脆弱性クラス | 認証不要の任意ファイルアップロード → リモートコード実行 |
| ステータス | VMwareによりパッチ適用済み(2020年11月~2021年2月)。ラボでは研究目的のみで、意図的に古く隔離されたバージョンを使用。 |
vCenter ServerはVMware仮想化インフラの中央管理プレーンであり、これを侵害されると仮想データセンター全体が侵害される可能性がある。この脆弱性は、単一のプラグインエンドポイントにおける認証チェックの欠如が、ホスト全体の乗っ取りにまで発展する典型的な例である。私はこのラボを構築し、CVE勧告を読むだけから、攻撃面、攻撃チェーン、そして同様に重要なこととして、どのように防ぐべきだったのか、防御的にどのように検出するのかを実際に理解することを目指した。
この脆弱性はvSphere Client(HTML5)に存在し、具体的には認証を必要とせずにファイルアップロードエンドポイント(/ui/vropspluginui/rest/services/uploadova)を公開するvCenter Serverプラグインに起因する。ポート443へのネットワークアクセスを持つ攻撃者は、このエンドポイントに細工したPOSTリクエストを送信し、基盤となるOS上のWebアクセス可能なディレクトリに任意のファイル(Webシェルを含む)をアップロードできる。これにより、攻撃者はvCenterサービスの権限でコードを実行でき、実質的にアプライアンスを完全に制御できる。
攻撃チェーンは大まかに以下のとおり:
本番データのない、完全に隔離された非インターネット接続の仮想ネットワークで構築:
(元の構築時の具体的なIPアドレス、認証情報、インフラ詳細は、この公開レポートから意図的に省略している。)
脆弱性の存在は、ターゲットのアップロードエンドポイントがパッチ未適用の脆弱性と一致する応答をするかどうかを確認することで、防御側(つまりブルーチームや監査担当者)が確認できる。これは、脆弱性スキャナや内部セキュリティチームが、攻撃者に先んじてネットワーク上の公開されたパッチ未適用のvCenterインスタンスを特定するために実行するのと同じ種類のチェックである。
このCVEの公開Nmap NSE検出スクリプトは、複数のオープンソースセキュリティリポジトリで入手可能である。このREADMEは、すぐに使えるスキャン/エクスプロイトツールの配布ではなく文書化に焦点を当てているため、ここでは再掲しない。ラボでは、スキャン出力で脆弱なターゲットがVULNERABLE(悪用可能)とフラグ付けされ、これが即時パッチ適用を優先するトリガーとなる。
このCVEの実用的な概念実証エクスプロイトは、Positive TechnologiesのMikhail Klyuchnikovによる発見後、2021年から公開されている。このプロフィールからすぐに実行可能なRCEペイロードを配布しないという趣旨から、ここではエクスプロイトコードを再掲しない。このレポートの焦点はツールではなく理解にある。要約すると、公開エクスプロイトは上記の手順2〜3を自動化する。JSP Webシェルを期待されるアップロード形式にパッケージ化し、脆弱なエンドポイントにPOSTし、Webアクセス可能なパスに配置されたことを確認し、それを使用して攻撃者へのリバースシェルをトリガーする。
このプロジェクトは、教育および専門能力開発を目的として、完全に隔離された非本番ラボ環境で実施された。許可のないシステムにはアクセスしていない。