セキュリティ・コンサルタント
村上 純一

 仮想化技術のセキュリティを語る上でVMMへの攻撃は避けることのできないテーマである。Intel VTも前述のようにVMMがゲストOSの下層で動作し,ゲストOSの挙動を掌握している。そのため,悪意のVMMが存在した場合,上層で動作しているゲストOSおよびその利用者にとって大きな脅威となる。タイプ1,タイプ2のマルウエアであれば検出の難易度はさておき,OSのどこかが改ざんされているのは確かであったが,タイプ3のマルウェアではこうした改ざんがそもそも存在しないのである。

 このように悪意のVMMとして実装されたルートキットは既にいくつか知られている。例えば,BLUE PILL PROJECT(http://bluepillproject.org/),セキュリティ・チームmatasanoが作成している「Hardware Virtualization Rootkit」(http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Zovi.pdf),「Hooking CPUID, A Virtual Machine Monitor Rootkit Framework」(http://www.rootkit.com/newsread.php?newsid=758)などだ。

 こうした既知のタイプ3ルートキットの中から,3番目に記した「Hooking CPUID, A Virtual Machine Monitor Rootkit Framework」を紹介したい。これは2007年7月にrootkit.comに投稿されたものだ。このルートキットは,コンセプト的な意味合いが強く最低限の機能しか実装されていないが,反面VMM RootkitはもとよりIntel VTの仕組みを理解する上で大変有用である。興味のある方は,是非ソースコードをダウンロードして全体に目を通して頂きたい(ソースコード,バイナリは,rootkit.comにメンバー登録後,ページ左部のメインメニューの「vault」からダウンロードできる)。

脅威はVMMの実装に起因

 簡単にこのルートキットの仕組みを説明しよう。プログラムは,(1)VMM本体およびVMMのインストールを行なうシステム・ファイル,(2)VMMのアンインストールを行なうシステム・ファイル,(3)CPUID命令(※CPUのベンダIDや搭載している機能の種類などを取得する命令)の実行結果を確認するプログラム――の三つから成り立っている。(1)のシステム・ファイルは,カーネルにロードされると下記の処理を行なう。

1. PAE(Physical Address Extension:物理アドレス拡張=※4Gバイト以上の物理アドレスを取り扱うための拡張機能)の状態を確認する。もし,有効な場合はエラーを返して終了してしまう。これは,前述の通り最低限の機能しか実装されておらずPAEはサポートされていないためである。PAEが無効の場合は,次の処理に進む。

2. VMXON命令の実行に必要となるVMXONリージョン(※VMXON命令が内部的に利用するメモリ空間)の作成,初期化を行なう。

3. VM Exit発生時におけるVMM用のスタック領域を作成,初期化する。

4. 現在の各種レジスタの値を保存した後,VMM起動関数(StartVMX関数)を呼び出す。

5. スタックに格納されているStartVMX関数からのリターン先アドレスを取得する。このアドレスは,VMLAUNCH命令実行後,ゲストOSの処理開始アドレスとなる。

6. VMXON命令の実行に必要な確認,設定を行なった後,VMXON命令を実行する。

7. VMCSを作成,初期化し,各ステートエリア,制御フィールドの設定を行なう。VMCSには,VM Exitの発生条件,5.で取得したゲストOSの処理開始アドレス,VMMのエントリ・ポイントのアドレス等が含まれている。

8. VMLAUNCH命令を実行する。これにより5.で取得したアドレスからOSの処理が開始される。

 実際にここまで述べたルートキットをインストールし,プログラムを実行した結果を写真1写真2に示す。

写真1●CPUID命令の実行結果(VMMインストール前)
写真1●CPUID命令の実行結果(VMMインストール前)

写真2●CPUID命令の実行結果(VMMインストール後)
写真2●CPUID命令の実行結果(VMMインストール後)
VMMでCPUID命令をフックし,Vendor IDを改ざんしている。

 ルートキットは,7.の際にCPUIDの実行によりVM Exitが発生するよう設定されている。そのため,CPUIDの実行結果をVMMで自由に制御することができる。

 以上,タイプ3に分類されるハードウエアの仮想化支援機能を利用したルートキットを紹介した。こうした脅威は,VMMのインストールを自由に行なえる点に根差している。そのため,Intel TXT(Trusted Execution Technology)などのTPM(Trusted Platform Module=耐タンパー性を備えたセキュリティチップ。ハードウェアによる暗号鍵の生成,格納やハッシュ値の計測,格納などの機能を提供する)を利用した技術の普及によって今後解決すると考えられる。こうした技術については回を改めて紹介したい。

村上純一(むらかみ・じゅんいち)
国内の大手セキュリティ・コンサルティング会社に勤務。セキュリティ・コンサルタント業務やソフトウエアのぜい弱性を発見する業務に携わる。