信頼できないクラウドにおける仮想化システムの監視機構 九州工業大学 情報工学部 機械情報工学科 光来研究室 15237058 平川 禎 信頼できないクラウドにおける仮想化システムの監視機構と題しまして、、機械情報工学科光来研究室B4の平川が発表します ゆっくりしゃべる
IaaS型クラウド 近年,IaaS型クラウドが普及 クラウドの各ホストでは仮想化システムが動作 インターネット経由で仮想マシン(VM)を提供 ユーザはVMにOSやサーバをインストールして利用 クラウドの各ホストでは仮想化システムが動作 ハイパーバイザの上でVMが実行される クラウド ハイパーバイザ VM OS サーバ インターネット ユーザ まずは研究背景からです。近年アマゾンEC2やグーグルコンピュートエンジンなどのIaaS型クラウドと呼ばれるクラウドサービスが普及しています。IaaS型クラウドはインターネット経由で仮想マシンVMをユーザに提供するサービスです。 ユーザは提供されたVMに自分が必要なOSやサーバをインストールして、VMを自由にカスタマイズして使用することができます。 クラウドの各ホストでは仮想化システムが動作していて、ハイパーバイザと呼ばれる基盤となるソフトウェアの上でVMが実行されています。 VMつかうことでマシン導入のコストや設置スペース、電力の削減などのメリットあり
IDSオフロード ユーザVMは侵入検知システム(IDS)を用いて監視する必要 ユーザVMの外側でIDSを安全に動作させる手法が用いられている 管理VMと呼ばれる特殊なVMから監視 ハイパーバイザ 管理VM ユーザVM 45〜50秒 クラウドにおけるユーザの使うVM(ユーザVM)は必ずしも適切な管理がされているとは限らず、外部から不正アクセスなどの攻撃を受ける可能性があります。これらの攻撃を検知するために侵入検知システムIDSを用いてユーザVM内の監視を行う必要があります。 しかし、ユーザVM上でIDSを動作させると、攻撃者の侵入時にIDSを無効化され(アニメ)監視を行えなくなってしまいます。そこで、ユーザVMの外側にある管理VMという特別な権限を持つVMでIDSを動作させ(アニメ)ユーザVMの外側から監視を行うIDSオフロードと呼ばれる手法が提案されています。このようにユーザVMの外側でIDSを動作させることで、仮にユーザVMに攻撃されたとしても、その中ではIDSは動作していないため、IDSを無効化されることはなく、安全にユーザVMの監視を続けることができます。 IDSは侵入を検知するだけ IPSは検知した侵入を自動で遮断 攻撃者 IDS IDSオフロード
管理VMへの攻撃 管理VMはクラウド管理者から攻撃を受ける恐れ クラウド内に悪意のある管理者がいる可能性 オフロードしたIDSが無効化される ハイパーバイザから管理VMを監視する手法も提案されている [Oyama et al.’08] ハイパーバイザ 管理VM ユーザVM 監視 悪意のある管理者 1分50〜2分 しかし管理VMはクラウドの管理者から攻撃を受ける恐れがあります。管理VMはクラウドの管理者によって管理されていますが、この管理者の中に悪意のある管理者がいる可能性があります。悪意のある管理者に管理VMを攻撃され(アニメ)、オフロードしたIDSを無効化される恐れがあります。また、管理VMはユーザVMにアクセスする権限を持っているため、悪意のある管理者にユーザVMのメモリやディスクの情報の盗聴や改ざんを行われたり、強制的にVMの起動、終了を行われたりすることも考えられます。 そこで(アニメ)管理VMの下で動作している基盤ソフトウェアであるハイパーバイザから管理VMを監視する手法が提案されています。 IDS 監視機構
ハイパーバイザへの攻撃 クラウド管理者はハイパーバイザにも攻撃可能 管理VMを監視する機構も無効化される恐れ ハードウェアを用いてハイパーバイザを監視する手法が提案されている [Wang et al.’10] 監視性能や導入コストの問題 ハイパーバイザ 管理VM ユーザVM 悪意のある管理者 IDS 2分40秒〜2分50秒 しかし、クラウド内の悪意のある管理者は管理VMだけでなくハイパーバイザにも攻撃を行うことが考えられます。ハイパーバイザが攻撃を受けると、(アニメ)さきほど説明した管理VMの監視機構を無効化される恐れがあります.また、ハイパーバイザはすべてのVMを制御していて、管理VM以上の権限を持っています。そのためVM内の情報の盗聴や改ざんだけでなく、仮想CPUやネットワーク帯域の割り当てなどを変更され、VMの性能が低下させられます。 これまでに(アニメ)CPUのシステム管理モードや専用のPCIカードなどハードウェアを用いてハイパーバイザや管理VMを監視するシステムが提案されていましたが、これらの手法は監視性能や導入コストなどに問題がありました。 監視機構 ハードウェア
提案:VS-monitor ネストした仮想化を用いて仮想化システムを安全に監視 仮想化システム全体を仮想化してクラウドVM内で動作 クラウドVMの外側に監視システムをオフロードしてハイパーバイザと管理VMを監視 信頼できない管理者の権限はクラウドVM内に制限 クラウドVM ハイパーバイザ 管理VM ユーザVM 3分30秒〜3分40秒 そこで、本研究ではネストした仮想化を用いて仮想化システムを安全に監視するシステムであるVS-monitorを提案します。ネストした仮想化はハイパーバイザと管理VMからなる従来の仮想化システム全体を仮想化して、クラウドVMと呼ばれるVM内で動作させる技術です。VS-monitorではこのネストした仮想化を用いることで、クラウドVMの外側に監視システムをオフロードして、ハイパーバイザと管理VMの監視を安全に行います。VS-monitorでは信頼できない管理者の権限をクラウドVM内に制限します。 このようにクラウドVM内に隔離することで信頼できない管理者はクラウドVMの外側の監視システムを無効化することができないため、安全にハイパーバイザと管理VMの監視を続けることが可能になります。 ※※※※監視システムは信頼できる一部の管理者が管理 信頼できないかもしれない管理者に仮想化システム全体の管理権限を与えても、外から監視するから安全 (VMで隔離することで権限を制限、VM内と外で隔たりが大きい) 信頼できない管理者 監視 システム
VMのメモリ監視手法 VM内のハイパーバイザやOSのデータを取得するために,VMのメモリを解析 ページテーブルと呼ばれるアドレス変換表を使用 監視対象データの仮想アドレスを物理アドレスに変換 監視システムはVMの物理メモリを参照してデータ取得 VM アドレス変換表 VMの仮想メモリ 4分30秒〜4分40秒 VS-monitorではVM内で動作しているハイパーバイザやOSのデータを、VMの外側から取得するためにVMのメモリの解析を行います。VMのメモリ解析には仮想アドレスと物理アドレスの対応付けをしている、ページテーブルと呼ばれるアドレス変換表を使用します。まず、監視するデータの仮想アドレスを特定し、そのアドレスをVM内で使われている物理アドレスに変換します。この変換の際に先程説明したアドレス変換表を使用します。こうやってアドレス変換されたVMの物理メモリを監視システムから参照することで、データを取得することができます。 アドレス変換が大事だからマッピングは省いて、監視システムが物理メモリを見ている感じにする(監視システムはVMの物理メモリしか見れないからアドレス変換が必要!) 監視 システム アドレス変換 VMの物理メモリ
ハイパーバイザの監視 ハイパーバイザのアドレス変換表を特定 ハイパーバイザのメモリ上にあるVM情報を取得 クラウドVMの仮想CPUに設定されている情報を利用 常に有効なアドレス変換表を探し出す ハイパーバイザの起動時にいくつかの候補を保存 ハイパーバイザのメモリ上にあるVM情報を取得 例:仮想CPU,メモリ割り当て クラウドVM 5分10秒〜5分20秒 クラウドVM内で動作しているハイパーバイザの情報を取得するためにVS-monitorはハイパーバイザのアドレス変換表を特定します。このアドレス変換表はクラウドVMの仮想CPUに設定されている情報を利用して取得することができます。仮想CPUには多くのアドレス変換表が設定されていて、それらすべてが常に有効というわけではありません、そこで、ハイパーバイザの起動時にいくつかの候補を保存しておいて、その中からメモリ監視時に常に有効なアドレス変換表を探してそれを用いて監視を行います。 このようにして取得したハイパーバイザのアドレス変換表を用いることで、ハイパーバイザのメモリ上にある仮想CPUやメモリの割り当てなどのVM情報を取得できるようになります。 CR3レジスタ:ページテーブルのアドレスを保存しているレジスタ 仮想CPUには一時的にしか使えないものも設定されてる〜 0x75e0a000も消す? アドレス変換表 仮想CPU
管理VMの監視 管理VMのアドレス変換表を特定 管理VM内のOSのメモリ上にある情報を取得 ハイパーバイザのメモリを解析することで情報を取得 管理VMの仮想CPUを管理するデータに格納されている 管理VM内のOSのメモリ上にある情報を取得 例:プロセス情報,VMのネットワーク使用量 管理VM ハイパーバイザ VMリスト アドレス変換表 6分10秒〜6分20秒 また、クラウドVM内で動作する管理VMを監視するために、VS-monitorは管理VMのアドレス変換表を特定します。この管理VMのアドレス変換表の情報はハイパーバイザの中に格納されているため,ハイパーバイザのメモリを解析することによって取得します。 まず、VS-monitorはハイパーバイザのアドレス変換表を用いてハイパーバイザ内のVMリストにアクセスし、リストの中から管理VMのデータを見つけます。そして、管理VMの仮想CPUのデータの中から管理VMのアドレス変換表を取得します。VS-monitorはこの管理VMのアドレス変換表を用いて管理VM内のOSのメモリ上にあるプロセス情報やVMのネットワークの使用量などの情報を取得します。 仮想CPUのデータ
監視システムの開発支援 監視対象システムのソースコードを用いて開発 LLView [植木あ’15]を拡張してアドレス変換を行うコードを自動挿入することで実現 ハイパーバイザ用LLView ハイパーバイザのソースコードを利用 管理VM用LLView ハイパーバイザ用LLViewを用いて管理VMのアドレス変換表を取得して利用 7分〜7分10秒 VS-monitorでは監視システムの開発を容易にするためにLLViewというツールを用いました。LLViewはオフロードした監視システムにアドレス変換を行うコードを自動挿入するツールです。ハイパーバイザのソースコードを利用してハイパーバイザ内のデータのアドレス変換を行うハイパーバイザ用のLLViewを開発しました。また、管理VM内のデータのアドレス変換を行う、管理VM用のLLViewも開発しました。管理VM用のLLViewはハイパーバイザ用のLLViewを利用して管理VMのアドレス変換表を取得し、これを利用してアドレス変換を行います。 アドレス変換を自動でできるやつ〜てくらいが伝わればいい ハイパーバイザの監視システム 管理VMの 監視システム ハイパーバイザ用LLView 管理VM用LLView
実験 VS-monitorの監視性能を調べる実験を行った 比較対象 ハイパーバイザの監視 管理VMの監視 安全ではない ホストマシン CPU:Intel Core i7 7700 メモリ:8GB ハイパーバイザ: Xen 4.10.1 クラウドVM 仮想CPU:8 メモリ:2GB ハイパーバイザ: Xen 4.10.1 管理VM 仮想CPU:8 メモリ:1490MB OS:Linux 4.4 7分50〜8分 次は実験について説明します。VS-monitorの監視性能を調べる実験を行いました。実験内容はハイパーバイザの情報を取得するプログラムと管理VMの情報の取得するプログラムの実行時間を測定しました。比較対象として,ネストした仮想化を用いていない従来の安全ではない仮想化システムの管理VMで管理コマンドを実行し、情報を取得する時間も測定しました。実験環境は以下の表のようになっています。 比較対象は安全じゃない方法ってところを強調
ハイパーバイザの監視性能 ハイパーバイザが管理しているVMの情報を取得するのにかかる時間を測定 仮想CPUの使用時間の取得は4.3ミリ秒高速 管理コマンドはハイパーバイザを呼び出すオーバヘッドが大きい 8分20秒 ハイパーバイザの監視性能の実験結果です。ハイパーバイザが管理しているVMの情報を取得するのにかかる時間を測定しました。左のグラフがVM一覧情報を取得するのにかかった時間で右のグラフが仮想CPUの使用時間の情報を取得するのにかかった時間になっています。青いほうがVS-monitorでオレンジが従来システムの管理コマンドで取得した時間です。VM一覧の取得時間では従来の管理コマンドに比べてVS-monitorは4.4ミリ秒高速でした。また仮想CPUの使用時間の取得は従来の管理コマンドより4.3ミリ秒高速という結果となりました。 このような結果になったのは従来の管理コマンドがハイパーバイザを呼び出すオーバヘッドが大きかったのが原因と考えられます。 (ハイパーコール > VSのアドレス変換) こっちも
管理VMの監視性能 管理VMが管理する情報の取得時間を測定 管理VMのプロセス一覧の取得時間は従来の管理コマンドより2.8ミリ秒増加 VS-monitorはアドレス変換のオーバヘッドが大きい 9分20秒 次は管理VMの監視性能の実験結果です。管理VMが管理する情報の取得時間を測定しました。左のグラフが、管理VMのプロセス一覧を取得するのにかかった時間で、右のグラフがVMのネットワークの使用量の取得時間になっています。管理VMのプロセス一覧の取得時間は、従来の管理コマンドに比べて2.8ミリ秒増加しました。また、VMのネットワークの使用量の取得時間は従来の管理コマンドに比べて4.4ミリ秒増加という結果になりました。このような結果になったのは、VS-monitorが管理VMの情報を取得する際のアドレス変換のオーバヘッドが大きいと考えられます (システムコール < VSのアドレス変換) 頻繁に取る1秒の1回程度なら4ミリ秒くらいの増加なら問題ないのでは?安全の代価
関連研究 V-Met [Miyama et al.’17] Copilot [Petroni et al.’04] 専用PCIカードを用いてOSの監視を行うため、コストが高い HyperCheck [Wang et al.’10] CPUのシステム管理モード(SMM)を用いてハイパーバイザと管理VMを安全に監視 SMMでのプログラム実行は低速 V-Met [Miyama et al.’17] ネストした仮想化を用いて仮想化システムの外側にIDSをオフロードする点は本研究と同じ ユーザVMのみを監視する点が異なる 10分10〜10分20病(20秒のがよい10秒だったら若干稼ぎ気味でしゃべる) 関連研究です。Copilotでは専用のPCIカードを用いて監視対象のOSの監視を行います。しかし、この手法は専用のPCIカードを導入するコストが高いという問題があります。 HyperCheckではCPUのシステム管理モードSMMを用いてハイパーバイザと管理VMの監視を行います。しかしSMMでのプログラムの実行は非常に低速で監視性能が下がるという問題があります。 V-metではネストした仮想化を用いて仮想化システムの外側に監視システムをオフロードする点が本研究と同じになっています。V-metはユーザVMのみを監視する点が本研究と異なります。 ユーザVMはCPUの仮想化支援を使って実装されてるので、その支援機構を使って監視 管理VMはまた違った実装なので取得方がちがう(管理VMはハイパーバイザの解析が必要だからこっちのが難しかった)ユーザは準仮想化、管理は完全仮想化
まとめ ネストした仮想化を用いて仮想化システムを安全に監視するVS-monitorを提案 今後の課題 仮想化システム全体を仮想化してその外側に監視システムをオフロード ハイパーバイザと管理VMのアドレス変換表を取得してメモリを解析 ハイパーバイザと管理VMの監視性能を確認 今後の課題 ハイパーバイザの常に有効なアドレス変換表を高速に特定 VMのディスクの監視に対応 11分〜11分10秒(12分ぎりオーバーくらいがよい) まとめです。本研究ではネストした仮想化を用いて仮想化システムを安全に監視するシステムであるVS-monitorを提案しました。従来の仮想化システム全体を仮想化して、クラウドVMの外側に監視システムをオフロードすることでハイパーバイザと管理VMを安全に監視します。VS-monitorはハイパーバイザと管理VMのアドレス変換表を取得し、ハイパーバイザと管理VMのメモリを解析することで目的のデータを取得します。ハイパーバイザと管理VMを監視するプログラムの実行時間を測定し、VS-monitorの監視性能の確認を行いました。 今後の課題は、ハイパーバイザの有効なアドレス変換表を高速に特定する手法を検討することと、VMのディスクの監視にも対応させることです。 本番で伸びたらまとめと関連研究をへらす