Slide 1

Slide 1 text

Qubes OS 入門 カーネル/VM探検隊@関西 6 @ntddk

Slide 2

Slide 2 text

自己紹介 ● Yuma Kurogome(@ntddk) ● Takeda Lab @ KEIO Univ. ● セキュリティキャンプとか ● EpsilonDeltaでCTFに出なかったり ● 3/10 留年かどうか判明します ● 3/22 誕生日です!!!!!!!!!! bit.ly/1hTbE8m

Slide 3

Slide 3 text

今回のお題: Qubes OS 知ってる人 ノ

Slide 4

Slide 4 text

Qubes OSとは ● Invisible Things Labが開発中のセキュアVM ● Xenベース ● Isolationによるセキュリティ ● オープンソース(GPL v2ベース)

Slide 5

Slide 5 text

Invisible Things Lab

Slide 6

Slide 6 text

Invisible Things Lab ● Joanna Rutkowskaが2007年に設立 – CitrixにXenClientのソース公開を迫ったのは彼女 – COSEINC在籍中にBlue Pill[SyScan'06]を開発 ● Blue Pill – 仮想化技術を悪用したrootkit ● 従来のrootkitはRing 0で動作 – システムコールフック – カーネル構造体の改竄 – ゆえに検出が容易 ● ハイパーバイザはRing -1で動作 – ゆえに*感染後の*検出が困難

Slide 7

Slide 7 text

Invisible Things Lab ● 低レイヤーのセキュリティを研究 – rootkit – SMM(System Management Mode) – Intel TXT(Trusted Execution Technology) ● XenベースのセキュアVMとしてQubes OSを開 発中

Slide 8

Slide 8 text

あれっ XenとKVMの違いってなんだったっけ

Slide 9

Slide 9 text

おさらい: XenとKVMの違い ● 仮想化の方式 ● 割り込みの通知 ● メモリマッピング

Slide 10

Slide 10 text

おさらい: XenとKVMの違い ● Xen – Xenは準仮想化 – Intel VTの登場で完全 仮想化にも手を出す Hardware Xen 準仮想化OS 特権ドメイン 準仮想化OS 完全仮想化OS

Slide 11

Slide 11 text

おさらい: XenとKVMの違い ● KVM – KVMは完全仮想化 – virtioで一部を準仮想 化 Hardware Linux + KVM 完全仮想化OS 完全仮想化OS 完全仮想化OS

Slide 12

Slide 12 text

おさらい: XenとKVMの違い ● 仮想化の方式 – 準仮想化は仮想環境向けにOSを改変 ● ハードウェアを完全にエミュレーションする必要がない ため高速 – 完全仮想化はOSの改変なし ● 割り込みの通知 – Xenはevent channnel – KVMはMSI(-X)

Slide 13

Slide 13 text

おさらい: XenとKVMの違い ● メモリマッピング – KVM Gest-Physicalなメモリ空間はQEMUのhost-virtual なメモリ空間の一部 – Xen 仮想マシンのGest-Physicalなメモリ空間をオンデ マンドでマッピング ● ハードウェア仮想化支援機構が両者を支える – Intel VT, AMD-V

Slide 14

Slide 14 text

あれっ Intel VTってなんだったっけ

Slide 15

Slide 15 text

おさらい: Intel VT ● センシティブ命令をなんとかしたい – 踏んだらまずいやつ – エミュレーションに移りたい ● わざわざ書き換えるのはもう嫌だよ

Slide 16

Slide 16 text

おさらい: Intel VT(VMX) 1.VMCSにゲスト環境の設定をロード 2.CPUにVMCS(AMDではVMCB)をセット 3.VMLAUNCHからVMEntryを発行、VMX non- root mode(ゲストモード)に切り替え 4.ゲスト環境実行 5.trap要因が発生、VMExitでVMX root modeに 遷移 6.VMExit要因を調べ、要因に合わせたエミュ レーション処理を行う 7.VMRESUMEからVMEntryを発行、VMX non- root modeに遷移, 4に戻る

Slide 17

Slide 17 text

おさらい: Intel VT(VMX) ● VMCSってなに – Virtual Machine Control Structure – 設定とマシンの状態を保存 ● プログラムカウンタ ● レジスタ ● VMの開始位置 ● trap要因(センシティブ命令)

Slide 18

Slide 18 text

おさらい: Intel VT(EPT) ● ページングの扱いをなんとかしたい – 物理アドレスを引くのに二重の変換なんてやってら れない – 自前のページテーブルを用意して一発で引けるよう に ● Shadow Page Table ● EPT – Extended Page Table – ハード側がアドレス変換をやってくれる – VMM側でやることが減ったのでオーバヘッド減少

Slide 19

Slide 19 text

おさらい: Intel VT ● VTを前提にするとハイパーバイザが簡単に作 れるようになったよというのがKVM ● XenはVTが無かった頃から頑張ってきた – センシティブ命令はHyperCallでハイパーバイザか ら実行していたため、準仮想化ではOSを改変する 必要がある – VTのおかげで完全仮想化の導入ができた

Slide 20

Slide 20 text

Xenの仮想化 Hardware Xen VM(Dom0) VM(DomU 1) VM(DomU 2) ドライバ バックエンドドライバ フロントエンドドライバ フロントエンドドライバ ● XenはDom0(ホスト)とDomU(ゲスト)を持つ

Slide 21

Slide 21 text

Xenの仮想化 ● XenハイパーバイザはDom0のOSを実行してか らDomUのOSを実行する ● Dom0(ホスト)で他のDomU(ゲスト)を管理 – 特権ドメインであり、全ハードウェアへのアクセス 権限を持つ – DomUはバックエンド/フロントエンドを介して Dom0にハードウェアアクセスを依頼する ● Qubes OSはこの仕組みをセキュリティに応用

Slide 22

Slide 22 text

Qubes OSのコンセプト

Slide 23

Slide 23 text

デスクトップ環境のセキュリティ ● デスクトップ環境に強固なセキュリティを提供 する ● OS上で様々なアプリケーションが動く 仕事で使っている スプレッドシート ブラウザ メールクライアント

Slide 24

Slide 24 text

デスクトップ環境のセキュリティ ● 普通は他のアプリケーションも同じ環境で実行 するよね 仕事で使っている スプレッドシート ブラウザ メールクライアント ゲーム

Slide 25

Slide 25 text

デスクトップ環境のセキュリティ ● もしこれがマルウェアだったら? 仕事で使っている スプレッドシート ブラウザ メールクライアント ゲーム 情報流出

Slide 26

Slide 26 text

デスクトップ環境のセキュリティ ● 脆弱性を突かれてブラウザが乗っ取られたら? 仕事で使っている スプレッドシート ブラウザ メールクライアント 情報流出

Slide 27

Slide 27 text

つらい

Slide 28

Slide 28 text

2つのアプローチ ● Correctnessによるセキュリティ ● Isolationによるセキュリティ

Slide 29

Slide 29 text

Correctnessによるセキュリティ ● 正しさを担保する – コード監査 – デベロッパー教育 ● Microsoft Security Development Lifecycleとか – テスト ● ファジング – “安全”なプログラミング言語 ● 実際のところ徹底できてないよね

Slide 30

Slide 30 text

Isolationによるセキュリティ ● アプリケーションを隔離したい ● あるアプリケーションが脅威に晒されても他の アプリケーションに影響を与えなくしたい 仕事で使っている スプレッドシート ブラウザ メールクライアント ゲーム 遮断

Slide 31

Slide 31 text

Isolationによるセキュリティ ● 同じアプリケーションでも別の使い方がある ● 例えばブラウザ – 社内インフラへのアクセス – ショッピング – ニュースサイト – ググる ● 違うアプリケーション同士はもちろん、同じア プリケーションも用途ごとに分離 ● できたらいいよね

Slide 32

Slide 32 text

Isolationによるセキュリティ ● OSが提供しているIsolationじゃだめなの? – アドレス空間の分離 – アカウントの分離 – ACL – カーネル空間とユーザー空間の分離 – chroot – systrace – SELinux – BSDのセキュアレベル ● でもOSの機能だけじゃ安全とは言えない

Slide 33

Slide 33 text

Isolationによるセキュリティ ● モノリシックカーネル自体がバギー ● サードパーティ製ドライバが無数に動作 “One bug to rule them all!”

Slide 34

Slide 34 text

そこでQubes OS

Slide 35

Slide 35 text

仮想化技術によってさらなるIsolationを提供

Slide 36

Slide 36 text

仮想化技術を用いるメリット ● バグや脆弱性はコード量に比例[SOSP01] ● Linuxカーネルのソースコードは1500万行以上 ● ベアメタルハイパーバイザは1000行~3000行

Slide 37

Slide 37 text

概念図 ● App Domain ● Strage Domain ● Network Domain ● Domain 0 前述のIsolationを実現!

Slide 38

Slide 38 text

Dom0 ● 管理とセキュアな環境を提供 ● Dom0にはNetwork機能とStorage機能は含まれ ない ● 通常ユーザが使用するアプリケーションは Dom0で起動する ● 2500行のCコード

Slide 39

Slide 39 text

Strage Domain ● Storage機能専用の(非特権な)VM ● 物理レイヤをコントロール

Slide 40

Slide 40 text

Network Domain ● Network機能専用の(非特権な)VM ● 物理レイヤをコントロール

Slide 41

Slide 41 text

AppVM ● 複数のアプリケーションを動作させるVM ● Qubes OSの名前の由来 – Qube: ブロックのイメージ ● 用途(ドメイン)に応じてVMを作成する – Work – Shopping – Personal ● ドメイン同士は隔離されているためセキュア! ● Read OnlyなTemplate VMを元に作成される ● 管理コンソールからアップデート可能

Slide 42

Slide 42 text

AppVM ● Disposable VM – ひとつのアプリ専用の使い捨てVM – 同じドメイン内の情報は読みだすことができてしま う – PDFファイル閲覧などに使用 – マルウェアに感染しても抜き出される情報がない! – Disposable VMで確認してからWork VMなどでファ イルを開く

Slide 43

Slide 43 text

AppVM ● Lightweight Virtual Machine – ドメイン毎にゲストを立ち上げるため、軽量 ● VMを意識させないUI – X Window System – アプリケーションのウィンドウにドメイン名とドメ イン固有の色を表示するだけ

Slide 44

Slide 44 text

AppVM “Work” VM “Shopping” VM “Work” VM Desktop ハイパーバイザによるIsolation

Slide 45

Slide 45 text

Screenshot 行 1 行 2 行 3 行 4 0 2 4 6 8 10 12 列 1 列 2 列 3 http://wiki.qubes-os.org/trac/attachment/wiki/QubesScreenshots/r2b2-kde-three-domains- at-work.png

Slide 46

Slide 46 text

GUIの仮想化 Introducing Qubes OS qubes-intro-apr-2010.pdf

Slide 47

Slide 47 text

GUIの仮想化 ● X Windows Systemを噛ませる ● Xenの共有メモリを経由してAppVMからDom0 にGUIを写す ● Dom0からハードウェアを叩いて描画 ● OpenGLには未対応

Slide 48

Slide 48 text

VMの保護 ● VM保護に関連する研究 ● Overshadow[ASPLO08] – VMMからゲストOSのコンテキストを取得 – メモリアクセス時にページを暗号化 – プロセスには暗号化されていないメモリを見せる – 専用のプログラムローダが必要 ● SP3[Vee08] – VMM からプロセスメモリの暗号化 – ページ毎にアクセス制御を設定 – 暗号化したページと暗号化していないページを保持 することでオーバヘッド軽減

Slide 49

Slide 49 text

VMの保護 ● Qubes OSではIntel VT-dとIntel TXTによって VMを保護 ● DMAをプロテクション – Direct Memory Access – CPUを経由せずハードウェアから直接メモリを読み 書きする

Slide 50

Slide 50 text

Intel VT-dによるDMA仮想化 1.ハードウェアからDMAリクエスト発行 2.DMA Remapping EngineがDevice Assignment Structureを参照 3.Address Translation Structureを取得

Slide 51

Slide 51 text

VMの保護 ● VT-dによるアドレス変換の際にVMのアドレス レンジ以外からの読み書きを阻止 ● VT-dが有効になっていないブートプロセスの 早期ではIntel TXTがVMを保護

Slide 52

Slide 52 text

Intel TXT ● Trustという概念 – 全てが期待通りに動くこと – 身元を明らかにするIdentityとそれを獲得する Measurement – 仮想マシンのセキュリティにおいて重要視される ● RTM(Root of Trust for Measurement)によって Trustを確立する – 信頼のおける完全性の計測を行うことができる演算 エンジン ● Trustの確立には部分的なTrustを積み重ねる必 要がある – Root of Trustを起点にChain of Trustを繋げる

Slide 53

Slide 53 text

Intel TXT ● 自身をMeasurementできないため何をRTMと おくかは重要 ● Static RTM – RTMはファームウェア – システム起動からChain of Trustを構築していく – BIOS/VMMの密接な関係 ● Dynamic RTM – RTMはGETSEC[SENTER]命令の実行 – 命令の実行からChain of Trustを構築していく – SENTERはDMAプロテクションを有効化する → VMの保護に繋がる!

Slide 54

Slide 54 text

Intel TXT ● Intel TXTはSRTMとDRTMの混合 ● BIOS(チップ) → (SRTM) → bootloader →  (SRTM) → os → (DRTM) → hypervisor (thx @yuzuhara)

Slide 55

Slide 55 text

ストレージ Introducing Qubes OS qubes-intro-apr-2010.pdf

Slide 56

Slide 56 text

ストレージ 1.Intel TXTによる検証 2.Dom0のvmlinuzを読み込む 3.スマートカードのパスフレーズを照合 4.Strage Domainに展開 5.暗号化されたrootファイルシステムの復元 6.各AppVMに展開

Slide 57

Slide 57 text

VM間の通信 ● Qubes OSは以下の機能を持つ – クリップボード共有 – 仮想ドライブを経由したファイル移動 ● Cross VM(VM間)の脆弱性は狙われやすい ● LiveMigration時にrootkitを挿入する[BlackHat DC08] ● 物理キャッシュから鍵を覗き見るCross VM Side Channel Attack[CCS12] – 悪意のVMから連続してキャッシュを叩いた時のレ スポンスで他のVMからのアクセスを推定

Slide 58

Slide 58 text

ファイルシステム Introducing Qubes OS qubes-intro-apr-2010.pdf

Slide 59

Slide 59 text

ファイルシステム ● 全てのAppVMはrootファイルシステムを共有 – ReadOnly ● AppVM毎にプライベートなストレージを保持 ● VM固有のキーによってアクセスを検証

Slide 60

Slide 60 text

まとめ ● アプリケーションを用途毎にドメイン化 ● ドメイン単位でXenのVMを作るアプローチで セキュアVMを実現 ● GUIの仮想化によるシームレスな操作 ● Intel VT-dによるDMAプロテクション ● Intel TXTによるストレージの保護 ● VM固有のキーによるファイルシステムの保護

Slide 61

Slide 61 text

詳しくは qubes-os.org

Slide 62

Slide 62 text

ありがとうございました