HyperSafe
HyperSafe: A Lightweight Aproach to Provide Lifetime Hypervisor Control-Flow Integrity
Zhi Wang and Huxian Jian
2010年のIEEE Symposium on Security and Privacyから。ハイパバイザそのものを保護するアプローチについて。著者のWangらはNorth Carolina State University所属。
本論文の投稿時点ではハイパバイザそのものは保護されていなかった。つまり、ゲストOSの制御を取ることが出来ればハイパバイザの制御も取ることが出来、悪用することが可能であった。本論文の提案が目指すのはハイパバイザの制御フローの完全性を保つことである。提案は二つの技術からなる。一つは、Non-Bypassable Memory Lockdownで、これはハイパバイザのメモリ領域をロックしてハイパバイザ以外の書き込みと実行を不可能にする技術である。もう一つは、Restricted Pointer Indexingで、ポインタの参照をテーブル経由の間接参照にすることで、ポインタの書き換えを防ぐ技術である。
Non-Bypassable Memory LockdownはIA32のWPビットを使っただけだし、Restricted Pointer Indexingは2010年以前に議論されていたような気がするので、アイディア自体は進歩しているようには思えない。LLVMを改造して制御フロー分析の部分を実装したりして、実装は結構大変だったろうなと思う。
おもしろかったのはType-IIハイパバイザでHyperSafeの技術を使う際の課題を議論しているところだ。HyperSafeはType-Iハイパバイザの構成を前提に設計と実装がされている。そのため、その技術をType-IIハイパバイザの構成に持って行くときにはいくつか問題があると言っている。一つは、Linuxのような現代のOSは性能至上主義でそのためにダブルマッピングや混合ページが多用されており、これがNon-Bypassable Memory Lockdownを難しくすることである。もう一つはクローズドなローダブルモジュールで、このようなモジュールはソースコード解析が出来ないので、ごく簡単に言うとRestricted Pointer Indexingを適用できない、ということである。
