BitvisorとI/O 仮 想 化 技 術 筑 波 大 学 大 学 院 システム 情 報 工 学 研 究 科 研 究 員 保 理 江 高 志
はじめに Bitvisor 最 大 の 特 徴 である 準 パススルー 型 アーキテクチャ へのI/O 仮 想 化 技 術 "Intel Virtualization Technology for Directed I/O"に 基 づく 機 能 拡 張 について 技 術 的 側 面 を 解 説 本 資 料 内 記 載 の 会 社 名 製 品 名 は 各 社 の 登 録 商 標 または 商 標 です
アジェンダ ハードウェアによるI/O 仮 想 化 支 援 概 要 ハードウェア 機 能 IOMMUとは? Intel Virtualization Technology for Directed I/O 技 術 解 説 利 用 プログラミングにあたってのノウハウ BitvisorとIntel VT-d Para-passthroughアーキテクチャ 想 定 脅 威 プロテクションストラテジー
ハードウェアによるI/O 仮 想 化 支 援 I/O 仮 想 化 I/O Virtualization 種 々のハードウェア 仮 想 化 支 援 技 術 適 合 プロダクト PCI-SIG IOV 各 ハイパバイザでのVT-dサポート IOMMUが 提 供 する 機 能 IOMMUの 利 用 シナリオ bounce buffer malicious DMAの 防 止
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からのメモリ 参 照 時 仮 想 アドレス 物 理 アドレス 間 の マッピングを 管 理 する 機 構
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(ページテーブルエントリ)
種 々のハードウェア 仮 想 化 支 援 技 術 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 仮 想 化 支 援 技 術
適 合 プロダクト 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~?)
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について
各 ハイパバイザ( 及 びカーネル)のサポート 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.
IOMMUが 提 供 する 機 能 Remapping と Isolation I/Oアドレス 空 間 のリマッピング デバイス 側 物 理 メモリ 間 のメモリマッピング 管 理 (IOMMU) キャッシュ 機 構 を 備 える(e.g. IOTLB) 割 り 込 みのリマッピング I/Oアドレス 空 間 のIsolation 隔 離 デバイス 毎 異 なるI/Oアドレスマッピングを 適 用 し 参 照 すべきで ない 物 理 メモリを 保 護 する MMUとIOMMU プロセッサ or デバイス 主 記 憶 間 でのアドレス 変 換 ページテーブルマッピング 管 理 アクセス 制 御 キャッシュ 機 構 (TLB or IOTLB) プロセス 毎 or デバイス 毎 独 立 したアドレス 空 間 を 提 供
CPU 側 からのメモリ 参 照 Address Bus 0x0a000 MMU 0x0aa000 CPU Mem Controller Memory I/O Controller I/O Data Bus リニアアドレスで 対 象 を 指 定 MMUにより 物 理 アドレスに 変 換 アドレスバスに 送 出 プロセス 毎 独 立 したアドレス 空 間 Privilegeによるメモリプロテクション
デバイス 側 からのメモリ 参 照 (IOMMU 無 し) Address Bus 0x0a000 MMU Mem Controller I/O Controller 0x0a000 CPU Memory I/O Data Bus フラットな 物 理 アドレス 空 間 としてメモリを 参 照 物 理 アドレスをそのままアドレスバスに 送 出 全 てのデバイスが1つのアドレス 空 間 を 共 有 メモリは 保 護 されない
IOMMUの 利 用 シナリオ ~ Bounce Buffer CPU #1 (64-bit) CPU #2 (64-bit) MMU MMU low-mem Bounce Buffer memcpy DRAM high-mem I/O Memory メモリコピーによる オーバーヘッド High-mem 領 域 にDMAできない Legacy Device Device Device
IOMMUの 利 用 シナリオ ~ I/Oメモリ 保 護 インスタンス #1 インスタンス #2 Malicious DMA Drv. CPU #1 CPU #2 MMU MMU デバイスドライバのバグ 不 正 なバッファアドレス メモリマッピング インスタンス #1 のリソース DRAM Device Device Device
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)
仮 想 化 技 術 との 協 調 Directed I/O ~ VMへのデバイスの 直 接 的 な 割 り 当 て 互 換 性 Nativeなデバイスドライバを 利 用 可 能 ( Paravirtualization) パフォーマンス 低 オーバーヘッド I/O 仮 想 化 に 関 するVMM 側 処 理 をハードウェアレベルで 実 現 スケーラビリティの 改 善 I/Oドメイン(cf. Dom-0)への 負 荷 集 中 が 回 避 される セキュリティ 信 頼 性 Fine-grain Device Access Control によるI/Oメモリ 保 護 フォルトハンドリング ログ 取 得 VMMの 設 計 実 装 がシンプルに
Intel Virtualization Technology for Directed I/O ハードウェア 構 成 アドレス 変 換 方 式 の 比 較 (CPU 側 / デバイス 側 ) デバイスコンテキストの 選 択 I/O page table walk データのキャッシング / Invalidation フォルトハンドリング Remapping ハードウェアレジスタ
ハードウェア 構 成 チップセット 機 能 ( プロセッサ 機 能 ではない) North Bridgeに 実 装 複 数 の Remapping Unit からなる IOTLB ~ キャッシュ 機 構 を 備 える Intel VT-d Specificationより AMD IOMMU Specificationより
ページング 方 式 の 比 較 (CPU 側 / デバイス 側 ) Control Register Page Directory Page Table Page Table 物 理 メモリ CR3 Root-Entry Table Address Register RTADDR DMA buffer ASR(Address Space Root) bus #0 devfn 00:0 bus #1 devfn 00:1 Root-Entry Table Context-Entry Table I/O Page Table I/O Page Table I/O Page Table
フォルトハンドリング 下 記 フォルトに 大 別 可 能 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 を 得 られる
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
VT-d 利 用 手 順 実 装 概 要 ハードウェアチェック Remappingテーブルの 設 定
実 装 概 要 ハードウェアチェック VT-dサポートの 検 出 ハードウェア 定 義 のチェック PCIデバイスのプローブ Remappingテーブルの 設 定 Remapping Policy コンテキスト 情 報 (Root-Entry table / Context-Entry table) I/Oページテーブル インタラプトリマッピングテーブル リマッピング 有 効 化 各 ステータスのチェック 各 レジスタの 初 期 化 機 能 の 活 性 化
ハードウェアチェック DMAR Parseの 例 ( Intel DQ35JOE) Host Address Width : 35 4つのリマッピングユニット Unit #1 Base Address : 0xFEB00000 Device Scope : 00:1b:0 HD Audio Controller Unit #2 Base Address : 0xFEB01000 Device Scope : 00:2:0 Integrated Graphics Controller 00:2:1 Unit #3 Base Address : 0xFEB02000 Device Scope : NULL ( ) Unit #4 Base Address : 0xFEB03000 Device Scope : INCLUDE_ALL ( その 他 すべてのデバイス)
Remappingテーブルの 設 定 Hypervisor 用 メモリにテーブル 領 域 確 保 ゲストOSからの 保 護 コンテキストテーブル 参 照 するI/OページテーブルのASRを 登 録 デバイスとI/Oページテーブルマッピングとの 関 連 付 け I/Oページテーブル ゲストOS デバイス 双 方 から 参 照 可 能 な 物 理 ページを 介 してDMA ゲスト 物 理 アドレスマッピング(GPA-HPA) と I/Oメモリマッピング(DVA-HPA) の 整 合 性 がとられていること 不 正 なDMAの 防 止 ゲストOSに 割 り 当 てられたデバイスは そのゲストOSの 管 理 しない メモリを 参 照 できてはならない Hypervisor 及 び 他 ゲストOSのメモリ 保 護
BitvisorとVT-d Para-passthroughアーキテクチャ Malicious DMAのリスク プロテクションのストラテジー Hypervisorの 保 護 Shadow DMAに 関 するパーミッション 実 装 ビルドオプション 起 動 例
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ストレージ
Para-passthroughアーキテクチャ Guest OS BitVisor System Resource monitor Control I/O Device Driver Device Driver encrypt Intercepted Device Data decrypt Device Driver Passthrough Device
Malicious DMAのリスク Guest OS BitVisor System Resource monitor Control I/O Device Driver Device Driver encrypt Intercepted Device Data decrypt Device Driver Passthrough Device
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
プロテクションのストラテジー 0xFFFFFFFF GPA-HPA mapping DVA-HPA mapping Malicious memory access Hypervisor region Malicious DMA Device B Guest OS BitVisor IOMMU DMA Buf. B DMA Buf. A Device A 0x00000000
プロテクションのストラテジー DVA-HPA mapping shadow DMA region encryption /decryption Hypervisor region Malicious DMA Device B Guest OS BitVisor IOMMU DMA Buf. B DMA Buf. A Device A
まとめ 開 発 状 況 リリーススケジュール 課 題 Future Works 開 発 実 験 環 境 詳 細 参 考
開 発 の 状 況 リリーススケジュール VT-dハードウェアドライバ 開 発 make config 時 のビルドオプション VTD_TRANS で 選 択 規 模 : 約 3K 行 (C, アセンブラ) 周 辺 処 理 との 関 連 ACPI description tableのパース PCIデバイスの 検 出 実 現 されている 機 能 非 暗 号 化 デバイス (Hypervisor 保 護 ) ATA Driver (Shadow DMA 領 域 限 定 化 ) リリーススケジュール 次 期 リリースより 統 合 ( 予 定 )
課 題 課 題 Future Works プロテクションの 拡 充 ATA Driver ( 済 ) NIC ( 未 ) UHCI ( 未 ) 対 応 動 作 確 認 ハードウェアの 拡 充 Q45 Chipset AMD-IOMMU 評 価 性 能 試 験 Malicious DMAに 対 する 検 知 防 御 FireWireのケース
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
参 考 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)
参 考 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)