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シンポジウム
© Copyright 2024 Paperzz