BitvisorとI/O仮想化技術

BitvisorとI/O仮想化技術
筑波大学大学院 システム情報工学研究科 研究員
保理江 高志
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
はじめに
Bitvisor最大の特徴である
「準パススルー型アーキテクチャ」へのI/O仮想化技術
"Intel Virtualization Technology for Directed I/O"に
基づく機能拡張について、技術的側面を解説
本資料内記載の会社名、製品名は各社の登録商標
または商標です。
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
アジェンダ
ハードウェアによるI/O仮想化支援
概要、ハードウェア、機能
IOMMUとは?
Intel Virtualization Technology for Directed I/O
技術解説
利用・プログラミングにあたってのノウハウ
BitvisorとIntel VT-d
Para-passthroughアーキテクチャ
想定脅威
プロテクションストラテジー
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
ハードウェアによるI/O仮想化支援
I/O仮想化、I/O Virtualization
種々のハードウェア仮想化支援技術
適合プロダクト
PCI-SIG IOV
各ハイパバイザでのVT-dサポート
IOMMUが提供する機能
IOMMUの利用シナリオ
bounce buffer
malicious DMAの防止
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
I/O仮想化、I/O Virtualization
広義の“I/O仮想化” ⇒ 「I/Oデバイスエミュレーション」
VMが物理的資源(ハードウェアデバイス)への直接的な操作を行わ
ないよう、仲介となる「仮想的な資源」をVMMが提供
仮想的なI/O資源のエミュレーション
仮想デバイス(ストレージ、NIC、etc..)
I/Oエミュレータ
割り込みコントローラ
狭義の“I/O仮想化” ⇒ 「I/Oメモリ仮想化」
I/O Memory Management Unit (IOMMU)
デバイスからのDMAリクエストの際、I/Oアドレス⇔物理アドレス間の
マッピングを管理する機構
cf) MMU : CPUからのメモリ参照時、仮想アドレス⇔物理アドレス間の
マッピングを管理する機構
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
cf) “IOMMU”
GART
Graphics Address Remapping Table
グラフィックスカード向け(AGP, PCIe)
“aperture”を介したシンプルなアドレス変換
Calgary
IBM xSeries (x86_64 based)向け
Remapping, デバイスのIsolation, パーミッション制御
DVMA
Device Virtual Memory Address
Sun MicrosystemsのSbus向け、バスサイクル中にRemappingフェーズを有する
DART
Device Address Relocation Table
PowerPC970向け
Cell IOMMU
“Segmented translation model”
2つのローカルキャッシュ IOSLB(セグメントエントリ)とIOTLB(ページテーブルエントリ)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
種々のハードウェア仮想化支援技術
Intel VT-x (Virtualization Technology for IA-32)
x86/64向けプロセッサ仮想化支援技術
Intel VT-i (Virtualization Technology for IA-64)
Itanium 2向けプロセッサ仮想化支援技術
Intel VT-d (Virtualization Technology for Directed I/O)
I/O仮想化支援技術
Intel VT-c (Virtualization Technology for Connectivity)
Virtual Machine Device Queues, I/O Acceleration Technology, SR-IOV等の
統合技術
VMware ESX Server + 対応NIC (Intel 10GbE AT Server Adapter, etc..)
AMD-V
AMDプロセッサ仮想化支援技術
AMD-IOMMU
AMDのI/O仮想化支援技術
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
適合プロダクト
VT-d is enabled on the following chipsets:
Intel Q35 GMCH with ICH9 DO (Bearlake chipset)
Intel Q45 (Eaglelake)
The following chipsets have VT-d capability, but OEMs may not have enabled
in systems based on these:
Intel X38
Intel X48
For Intel Desktop Boards, these have VT-d support enabled:
Intel DQ35JO
Intel DQ35MP
Intel DX38BT
Intel DX48BT2
Intel DQ45CB ※2008/9リリース
Intel DQ45EK
For ASUS Desktop Boards, these have VT-d support enabled:
ASUS P5E-VM DO (Intel Q35 chipset)
AMD IOMMU
Add IOMMU support to RD890/RD880 chipsets (2009~ ?)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
PCI-SIG IOV
PCI-SIG I/O Virtualization
PCIeデバイス側での仮想化サポート
複数のゲストOS間でのネイティヴなデバイス共有に向けた仕様
Address Translation Service (ATS)
released March 2007
IOMMUによるアドレス変換、キャッシュ機構について
Single-Root IOV (SR-IOV)
released October 2007
単一システム内でのDirected I/Oについて
Multi-Root IOV (MR-IOV)
released May 2008
Blade環境でのFCバックボーンを介したDirected I/Oについて
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
各ハイパバイザ(及びカーネル)のサポート
Xen (3.2.1~)
Secure MILS Hypervisor (LynxWorks)
Parallels Server
Padded Cell (Green Hills Software)
VirtualLogix VLX
※ VMware ESX Server (次期リリース)
Linux Kernel (2.6.26時点)
intel_iommu_init() @ drivers/pci/intel-iommu.c
config DMAR
bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
depends on X86_64 && PCI_MSI && ACPI && EXPERIMENTAL
help
DMA remapping (DMAR) devices support enables independent address
translations for Direct Memory Access (DMA) from devices.
These DMA remapping devices are reported via ACPI tables
and include PCI device scope covered by these DMA
remapping devices.
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
IOMMUが提供する機能
“Remapping”と“Isolation”
I/Oアドレス空間のリマッピング
デバイス側⇔物理メモリ間のメモリマッピング管理 (IOMMU)
キャッシュ機構を備える(e.g. IOTLB)
割り込みのリマッピング
I/Oアドレス空間のIsolation・隔離
デバイス毎、異なるI/Oアドレスマッピングを適用し、参照すべきで
ない物理メモリを保護する
MMUとIOMMU
プロセッサ or デバイス ⇔ 主記憶間でのアドレス変換
ページテーブルマッピング管理
アクセス制御
キャッシュ機構(TLB or IOTLB)
プロセス毎 or デバイス毎、独立したアドレス空間を提供
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
CPU側からのメモリ参照
Address Bus
“0x0a000”
MMU
Mem Controller
I/O Controller
Memory
I/O
“0x0aa000”
CPU
Data Bus
リニアアドレスで対象を指定
MMUにより物理アドレスに変換、アドレスバスに送出
プロセス毎、独立したアドレス空間
Privilegeによるメモリプロテクション
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
デバイス側からのメモリ参照(IOMMU無し)
Address Bus
MMU
“0x0a000”
Mem Controller
I/O Controller
Memory
I/O
“0x0a000”
CPU
Data Bus
フラットな物理アドレス空間としてメモリを参照
物理アドレスをそのままアドレスバスに送出
全てのデバイスが1つのアドレス空間を共有
メモリは保護されない
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
IOMMUの利用シナリオ ~ Bounce Buffer
CPU #1
CPU #2
(64-bit)
MMU
(64-bit)
MMU
low-mem
high-mem
memcpy
Bounce
Buffer
High-mem領域
にDMAできない
DRAM
Legacy
Device
Copyright
Device
©
メモリコピーによる
オーバーヘッド
I/O Memory
Device
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
IOMMUの利用シナリオ ~ I/Oメモリ保護
インスタンス #1
インスタンス #2
Malicious
DMA Drv.
CPU #1
CPU #2
MMU
MMU
•デバイスドライバのバグ
•不正なバッファアドレス
インスタンス #1
のリソース
DRAM
メモリマッピング
Device
Copyright
Device
©
Device
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
DMAに纏わる脆弱性
Malicious DMA ~ DMAバッファのロケーションを不正に操作することで、ホスト
側物理メモリへの参照・改ざんが行われる
例) winlockpwn
FireWire経由でメインメモリに直接アクセス
Windowsパスワードを迂回し、管理者権限を奪取可能
・・・システムソフトウェア側での対処?
可能 (known caseであれば)
DMAの制御I/Oを監視、バッファのロケーション・サイズをチェックする
但し、設定の流儀はデバイス毎異なる、要個別対応
メモリ管理が複雑化し、オーバーヘッドも発生
winlockpwnのようなケースにはなす術がない (バグというより、仕様)
FireWire, OHCIのDisable
新しいマシンに買い替える ☺
(FireWireポートの無いマシン、FireWire I/OメモリをVirtualize可能なG5 Mac or Sun WS)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
仮想化技術との協調
“Directed I/O” ~ VMへのデバイスの直接的な割り当て
互換性
Nativeなデバイスドライバを利用可能 (⇔ Paravirtualization)
パフォーマンス
低オーバーヘッド
I/O仮想化に関するVMM側処理をハードウェアレベルで実現
スケーラビリティの改善
I/Oドメイン(cf. Dom-0)への負荷集中が回避される
セキュリティ・信頼性
“Fine-grain Device Access Control”によるI/Oメモリ保護
フォルトハンドリング・ログ取得
VMMの設計・実装がシンプルに
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Intel Virtualization Technology for Directed I/O
ハードウェア構成
アドレス変換方式の比較(CPU側 / デバイス側)
デバイスコンテキストの選択
I/O page table walk
データのキャッシング / Invalidation
フォルトハンドリング
Remapping ハードウェアレジスタ
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
ハードウェア構成
チップセット機能 (⇐ プロセッサ機能ではない)
North Bridgeに実装
複数の”Remapping Unit”からなる
IOTLB ~ キャッシュ機構を備える
※ Intel VT-d Specificationより
※ AMD IOMMU Specificationより
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
ページング方式の比較(CPU側 / デバイス側)
Control Register
Page Directory
Page Table
Page Table
物理メモリ
CR3
…
…
…
Root-Entry Table
Address Register
DMA
buffer
RTADDR
ASR(Address Space Root)
bus #0
devfn 00:0
bus #1
devfn 00:1
I/O Page Table
Copyright
©
I/O Page Table
2008 University of Tsukuba
…
…
Context-Entry
Table
…
…
…
Root-Entry
Table
I/O Page Table
2008/11/18セキュアVMシンポジウム
フォルトハンドリング
下記フォルトに大別可能
DMAリクエストの不正
不正なアドレス参照(GAW範囲外へのDMAリクエスト、 etc..)
アドレス変換時のエラー
Context Entry Table, I/O Page Table内容の不整合
不正なアドレス参照(I/O page table walk時)
“present”でないエントリ
パーミッションエラー
ハードウェア異常
IOTLB invalidation時のステータス異常、タイムアウト、 etc..
フォルト時の挙動
DMAリクエストはブロックされる CPU割り込みを発生
DMAトランザクションの回復処理は不可
フォルトロギング
Fault Status Registerより”Fault Reason”を得られる
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Remapping ハードウェアレジスタ
Memory Mapped Register
ベースアドレス
ACPI Description Tableから取得 (後述)
ステータス系
CAP : Capability Register
ECAP : Extended Capability Register
GSTS : Global Status Register
FSTS : Fault Status Register
コマンド系
GCMD : Global Command Register
CCMD : Context Command Register
IOTLB : IOTLB Register
制御パラメータ
RTADDR : Root-entry Table Address Register
IRTA : Interrupt Remapping Table Address Register
IVA : Invalidate Address Register
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
VT-d利用手順
実装概要
ハードウェアチェック
Remappingテーブルの設定
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
実装概要
ハードウェアチェック
VT-dサポートの検出
ハードウェア定義のチェック
PCIデバイスのプローブ
Remappingテーブルの設定
Remapping Policy
コンテキスト情報(Root-Entry table / Context-Entry table)
I/Oページテーブル
インタラプトリマッピングテーブル
リマッピング有効化
各ステータスのチェック
各レジスタの初期化
機能の活性化
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
ハードウェアチェック
DMAR Parseの例 (※Intel DQ35JOE)
Host Address Width : 35
4つのリマッピングユニット
Unit #1
Base Address :
Device Scope :
0xFEB00000
“00:1b:0” ← HD Audio Controller
Unit #2
Base Address :
Device Scope :
0xFEB01000
“00:2:0” ← Integrated Graphics Controller
“00:2:1”
Unit #3
Base Address :
Device Scope :
0xFEB02000
NULL (※)
Unit #4
Base Address :
Device Scope :
Copyright
0xFEB03000
INCLUDE_ALL (※その他すべてのデバイス)
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Remappingテーブルの設定
Hypervisor用メモリにテーブル領域確保
ゲストOSからの保護
コンテキストテーブル
参照するI/OページテーブルのASRを登録
デバイスとI/Oページテーブルマッピングとの関連付け
I/Oページテーブル
ゲストOS、デバイス双方から参照可能な物理ページを介してDMA
ゲスト物理アドレスマッピング(GPA-HPA)
と
I/Oメモリマッピング(DVA-HPA) の整合性がとられていること
不正なDMAの防止
ゲストOSに割り当てられたデバイスは、そのゲストOSの管理しない
メモリを参照できてはならない
Hypervisor及び他ゲストOSのメモリ保護
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
BitvisorとVT-d
Para-passthroughアーキテクチャ
Malicious DMAのリスク
プロテクションのストラテジー
Hypervisorの保護
Shadow DMAに関するパーミッション
実装
ビルドオプション
起動例
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Para-passthroughアーキテクチャ
“Passthrough I/O”と”Intercepted I/O”の併用
Passthrough I/Oのケース
非・暗号化デバイス:
ゲストOS⇔デバイス間で透過的にI/O
例)ビデオカード、キーボード
Intercepted I/Oのケース
暗号化デバイス
Hypervisorがモニタ、データ暗号化・復号化
制御・ステータスに関するI/Oの監視
データに関するI/Oについては暗号化適用
Shadow Bufferの適用
例)HDD、NIC,USBストレージ
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Para-passthroughアーキテクチャ
Guest OS
BitVisor
System Resource
monitor
Control
I/O
Device
Driver
Device
Driver
encrypt
Intercepted
Device
Data
decrypt
Device
Driver
Passthrough
Device
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Malicious DMAのリスク
Guest OS
BitVisor
System Resource
monitor
Control
I/O
Device
Driver
Device
Driver
encrypt
Intercepted
Device
Data
decrypt
Device
Driver
Passthrough
Device
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
Malicious DMAのリスク
Guest OS
BitVisor
System Resource
IOMMU
monitor
Control
I/O
Device
Driver
Device
Driver
encrypt
Intercepted
Device
Data
decrypt
Device
Driver
Passthrough
Device
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
プロテクションのストラテジー
0xFFFFFFFF
GPA-HPA mapping
DVA-HPA mapping
Malicious
memory
access
Guest OS
Hypervisor
region
Malicious
DMA
Device B
IOMMU
BitVisor
DMA Buf. B
DMA Buf. A
Device A
0x00000000
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
プロテクションのストラテジー
DVA-HPA mapping
encryption
/decryption
shadow DMA
region
Guest OS
Hypervisor
region
Malicious
DMA
Device B
IOMMU
BitVisor
DMA Buf. B
DMA Buf. A
Copyright
©
2008 University of Tsukuba
Device A
2008/11/18セキュアVMシンポジウム
まとめ
開発状況
リリーススケジュール
課題
Future Works
開発・実験環境詳細
参考
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
開発の状況・リリーススケジュール
VT-dハードウェアドライバ開発
“make config”時のビルドオプション”VTD_TRANS”で選択
規模:約3K行 (C, アセンブラ)
周辺処理との関連
ACPI description tableのパース
PCIデバイスの検出
実現されている機能
非・暗号化デバイス (Hypervisor保護)
ATA Driver (Shadow DMA領域限定化)
リリーススケジュール
次期リリースより統合 (予定)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
課題・Future Works
課題
プロテクションの拡充
ATA Driver (済)
NIC (未)
UHCI (未)
対応・動作確認ハードウェアの拡充
Q45 Chipset
AMD-IOMMU
評価
性能試験
Malicious DMAに対する検知・防御
FireWireのケース
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
開発・実験環境の詳細
Motherboard : Intel DQ35JOE
Firmware : JOQ3510J.86A.0942.2008.0807.1958
Processor : Intel Core 2 Duo E6750 (2.66GHz)
Memery : 4GB (1GB x 4)
Tested Operating Systems :
Fedora 7/8/9 (32/64bit)
Microsoft Windows XP
Microsoft Windows Vista
Tested Devices :
IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA
IDE Controller ※on-board
Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network Connection
※on-board
VGA compatible controller: Intel Corporation 82Q35 Express Integrated
Graphics Controller ※on-board
Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller
(Copper)
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
参考
“Intel® Virtualization Technology for Directed I/O Architecture
Specification”
“AMD I/O Virtualization Technology (IOMMU) Specification”
“xen.org”
http://www.xen.org
“Subverting the Xen hypervisor”, Wojtczuk (Black Hat USA 2008)
“Preventing and Detecting Xen Hypervisor Subversions”,
Rutkowska ,Wojtczuk (Black Hat USA 2008)
http://invisiblethingslab.com/bh08/
“SecVisor: A Tiny Hypervisor to Provide Lifetime Kernel Code Integrity
for Commodity OSes”, Seshadri, Luk et al. (SOSP 2007)
http://www.sosp2007.org/papers/sosp079-seshadri.pdf
“Utilizing IOMMUs for Virtualization in Linux and Xen”, Ben-Yehuda,
Mason et al. (Ottawa Linux Symposium 2006)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム
参考
www.storm.net.nz/projects/Firewire, DMA & Windows
http://storm.net.nz/projects/16
Wikipedia “IEEE 1394 interface” (☞ “Security issues”)
http://en.wikipedia.org/wiki/FireWire
“BitVisor: A Thin Hypervisor for Enforcing I/O Device Security”,
Shinagawa, et al. (VEE 2009)
Copyright
©
2008 University of Tsukuba
2008/11/18セキュアVMシンポジウム