Introduction to Qubes OS(ja)

Introduction to Qubes OS(ja)

カーネル/VM探検隊@関西 6 発表資料 http://atnd.org/events/47388 #kernelvm

5c6358240ec94522f70cf7b0e657f58f?s=128

Yuma Kurogome

March 09, 2014
Tweet

Transcript

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

  2. 自己紹介 • Yuma Kurogome(@ntddk) • Takeda Lab @ KEIO Univ.

    • セキュリティキャンプとか • EpsilonDeltaでCTFに出なかったり • 3/10 留年かどうか判明します • 3/22 誕生日です!!!!!!!!!! bit.ly/1hTbE8m
  3. 今回のお題: Qubes OS 知ってる人 ノ

  4. Qubes OSとは • Invisible Things Labが開発中のセキュアVM • Xenベース • Isolationによるセキュリティ

    • オープンソース(GPL v2ベース)
  5. Invisible Things Lab

  6. Invisible Things Lab • Joanna Rutkowskaが2007年に設立 – CitrixにXenClientのソース公開を迫ったのは彼女 – COSEINC在籍中にBlue

    Pill[SyScan'06]を開発 • Blue Pill – 仮想化技術を悪用したrootkit • 従来のrootkitはRing 0で動作 – システムコールフック – カーネル構造体の改竄 – ゆえに検出が容易 • ハイパーバイザはRing -1で動作 – ゆえに*感染後の*検出が困難
  7. Invisible Things Lab • 低レイヤーのセキュリティを研究 – rootkit – SMM(System Management

    Mode) – Intel TXT(Trusted Execution Technology) • XenベースのセキュアVMとしてQubes OSを開 発中
  8. あれっ XenとKVMの違いってなんだったっけ

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

  10. おさらい: XenとKVMの違い • Xen – Xenは準仮想化 – Intel VTの登場で完全 仮想化にも手を出す

    Hardware Xen 準仮想化OS 特権ドメイン 準仮想化OS 完全仮想化OS
  11. おさらい: XenとKVMの違い • KVM – KVMは完全仮想化 – virtioで一部を準仮想 化 Hardware

    Linux + KVM 完全仮想化OS 完全仮想化OS 完全仮想化OS
  12. おさらい: XenとKVMの違い • 仮想化の方式 – 準仮想化は仮想環境向けにOSを改変 • ハードウェアを完全にエミュレーションする必要がない ため高速 –

    完全仮想化はOSの改変なし • 割り込みの通知 – Xenはevent channnel – KVMはMSI(-X)
  13. おさらい: XenとKVMの違い • メモリマッピング – KVM Gest-Physicalなメモリ空間はQEMUのhost-virtual なメモリ空間の一部 – Xen

    仮想マシンのGest-Physicalなメモリ空間をオンデ マンドでマッピング • ハードウェア仮想化支援機構が両者を支える – Intel VT, AMD-V
  14. あれっ Intel VTってなんだったっけ

  15. おさらい: Intel VT • センシティブ命令をなんとかしたい – 踏んだらまずいやつ – エミュレーションに移りたい •

    わざわざ書き換えるのはもう嫌だよ
  16. おさらい: 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に戻る
  17. おさらい: Intel VT(VMX) • VMCSってなに – Virtual Machine Control Structure

    – 設定とマシンの状態を保存 • プログラムカウンタ • レジスタ • VMの開始位置 • trap要因(センシティブ命令)
  18. おさらい: Intel VT(EPT) • ページングの扱いをなんとかしたい – 物理アドレスを引くのに二重の変換なんてやってら れない – 自前のページテーブルを用意して一発で引けるよう

    に • Shadow Page Table • EPT – Extended Page Table – ハード側がアドレス変換をやってくれる – VMM側でやることが減ったのでオーバヘッド減少
  19. おさらい: Intel VT • VTを前提にするとハイパーバイザが簡単に作 れるようになったよというのがKVM • XenはVTが無かった頃から頑張ってきた – センシティブ命令はHyperCallでハイパーバイザか

    ら実行していたため、準仮想化ではOSを改変する 必要がある – VTのおかげで完全仮想化の導入ができた
  20. Xenの仮想化 Hardware Xen VM(Dom0) VM(DomU 1) VM(DomU 2) ドライバ バックエンドドライバ

    フロントエンドドライバ フロントエンドドライバ • XenはDom0(ホスト)とDomU(ゲスト)を持つ
  21. Xenの仮想化 • XenハイパーバイザはDom0のOSを実行してか らDomUのOSを実行する • Dom0(ホスト)で他のDomU(ゲスト)を管理 – 特権ドメインであり、全ハードウェアへのアクセス 権限を持つ –

    DomUはバックエンド/フロントエンドを介して Dom0にハードウェアアクセスを依頼する • Qubes OSはこの仕組みをセキュリティに応用
  22. Qubes OSのコンセプト

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

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

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

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

  27. つらい

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

  29. Correctnessによるセキュリティ • 正しさを担保する – コード監査 – デベロッパー教育 • Microsoft Security

    Development Lifecycleとか – テスト • ファジング – “安全”なプログラミング言語 • 実際のところ徹底できてないよね
  30. Isolationによるセキュリティ • アプリケーションを隔離したい • あるアプリケーションが脅威に晒されても他の アプリケーションに影響を与えなくしたい 仕事で使っている スプレッドシート ブラウザ メールクライアント

    ゲーム 遮断
  31. Isolationによるセキュリティ • 同じアプリケーションでも別の使い方がある • 例えばブラウザ – 社内インフラへのアクセス – ショッピング –

    ニュースサイト – ググる • 違うアプリケーション同士はもちろん、同じア プリケーションも用途ごとに分離 • できたらいいよね
  32. Isolationによるセキュリティ • OSが提供しているIsolationじゃだめなの? – アドレス空間の分離 – アカウントの分離 – ACL –

    カーネル空間とユーザー空間の分離 – chroot – systrace – SELinux – BSDのセキュアレベル • でもOSの機能だけじゃ安全とは言えない
  33. Isolationによるセキュリティ • モノリシックカーネル自体がバギー • サードパーティ製ドライバが無数に動作 “One bug to rule them

    all!”
  34. そこでQubes OS

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

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

  37. 概念図 • App Domain • Strage Domain • Network Domain

    • Domain 0 前述のIsolationを実現!
  38. Dom0 • 管理とセキュアな環境を提供 • Dom0にはNetwork機能とStorage機能は含まれ ない • 通常ユーザが使用するアプリケーションは Dom0で起動する •

    2500行のCコード
  39. Strage Domain • Storage機能専用の(非特権な)VM • 物理レイヤをコントロール

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

  41. AppVM • 複数のアプリケーションを動作させるVM • Qubes OSの名前の由来 – Qube: ブロックのイメージ •

    用途(ドメイン)に応じてVMを作成する – Work – Shopping – Personal • ドメイン同士は隔離されているためセキュア! • Read OnlyなTemplate VMを元に作成される • 管理コンソールからアップデート可能
  42. AppVM • Disposable VM – ひとつのアプリ専用の使い捨てVM – 同じドメイン内の情報は読みだすことができてしま う –

    PDFファイル閲覧などに使用 – マルウェアに感染しても抜き出される情報がない! – Disposable VMで確認してからWork VMなどでファ イルを開く
  43. AppVM • Lightweight Virtual Machine – ドメイン毎にゲストを立ち上げるため、軽量 • VMを意識させないUI –

    X Window System – アプリケーションのウィンドウにドメイン名とドメ イン固有の色を表示するだけ
  44. AppVM “Work” VM “Shopping” VM “Work” VM Desktop ハイパーバイザによるIsolation

  45. 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
  46. GUIの仮想化 Introducing Qubes OS qubes-intro-apr-2010.pdf

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

    • OpenGLには未対応
  48. VMの保護 • VM保護に関連する研究 • Overshadow[ASPLO08] – VMMからゲストOSのコンテキストを取得 – メモリアクセス時にページを暗号化 –

    プロセスには暗号化されていないメモリを見せる – 専用のプログラムローダが必要 • SP3[Vee08] – VMM からプロセスメモリの暗号化 – ページ毎にアクセス制御を設定 – 暗号化したページと暗号化していないページを保持 することでオーバヘッド軽減
  49. VMの保護 • Qubes OSではIntel VT-dとIntel TXTによって VMを保護 • DMAをプロテクション –

    Direct Memory Access – CPUを経由せずハードウェアから直接メモリを読み 書きする
  50. Intel VT-dによるDMA仮想化 1.ハードウェアからDMAリクエスト発行 2.DMA Remapping EngineがDevice Assignment Structureを参照 3.Address Translation

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

  52. Intel TXT • Trustという概念 – 全てが期待通りに動くこと – 身元を明らかにするIdentityとそれを獲得する Measurement –

    仮想マシンのセキュリティにおいて重要視される • RTM(Root of Trust for Measurement)によって Trustを確立する – 信頼のおける完全性の計測を行うことができる演算 エンジン • Trustの確立には部分的なTrustを積み重ねる必 要がある – Root of Trustを起点にChain of Trustを繋げる
  53. Intel TXT • 自身をMeasurementできないため何をRTMと おくかは重要 • Static RTM – RTMはファームウェア

    – システム起動からChain of Trustを構築していく – BIOS/VMMの密接な関係 • Dynamic RTM – RTMはGETSEC[SENTER]命令の実行 – 命令の実行からChain of Trustを構築していく – SENTERはDMAプロテクションを有効化する → VMの保護に繋がる!
  54. Intel TXT • Intel TXTはSRTMとDRTMの混合 • BIOS(チップ) → (SRTM) →

    bootloader →  (SRTM) → os → (DRTM) → hypervisor (thx @yuzuhara)
  55. ストレージ Introducing Qubes OS qubes-intro-apr-2010.pdf

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

  57. VM間の通信 • Qubes OSは以下の機能を持つ – クリップボード共有 – 仮想ドライブを経由したファイル移動 • Cross

    VM(VM間)の脆弱性は狙われやすい • LiveMigration時にrootkitを挿入する[BlackHat DC08] • 物理キャッシュから鍵を覗き見るCross VM Side Channel Attack[CCS12] – 悪意のVMから連続してキャッシュを叩いた時のレ スポンスで他のVMからのアクセスを推定
  58. ファイルシステム Introducing Qubes OS qubes-intro-apr-2010.pdf

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

  60. まとめ • アプリケーションを用途毎にドメイン化 • ドメイン単位でXenのVMを作るアプローチで セキュアVMを実現 • GUIの仮想化によるシームレスな操作 • Intel

    VT-dによるDMAプロテクション • Intel TXTによるストレージの保護 • VM固有のキーによるファイルシステムの保護
  61. 詳しくは qubes-os.org

  62. ありがとうございました