Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Qubes OS(ja)

Introduction to Qubes OS(ja)

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

Yuma Kurogome

March 09, 2014
Tweet

More Decks by Yuma Kurogome

Other Decks in Programming

Transcript

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

    • セキュリティキャンプとか • EpsilonDeltaでCTFに出なかったり • 3/10 留年かどうか判明します • 3/22 誕生日です!!!!!!!!!! bit.ly/1hTbE8m
  2. Invisible Things Lab • Joanna Rutkowskaが2007年に設立 – CitrixにXenClientのソース公開を迫ったのは彼女 – COSEINC在籍中にBlue

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

    Mode) – Intel TXT(Trusted Execution Technology) • XenベースのセキュアVMとしてQubes OSを開 発中
  4. おさらい: XenとKVMの違い • Xen – Xenは準仮想化 – Intel VTの登場で完全 仮想化にも手を出す

    Hardware Xen 準仮想化OS 特権ドメイン 準仮想化OS 完全仮想化OS
  5. おさらい: XenとKVMの違い • メモリマッピング – KVM Gest-Physicalなメモリ空間はQEMUのhost-virtual なメモリ空間の一部 – Xen

    仮想マシンのGest-Physicalなメモリ空間をオンデ マンドでマッピング • ハードウェア仮想化支援機構が両者を支える – Intel VT, AMD-V
  6. おさらい: 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に戻る
  7. おさらい: Intel VT(VMX) • VMCSってなに – Virtual Machine Control Structure

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

    に • Shadow Page Table • EPT – Extended Page Table – ハード側がアドレス変換をやってくれる – VMM側でやることが減ったのでオーバヘッド減少
  9. Xenの仮想化 Hardware Xen VM(Dom0) VM(DomU 1) VM(DomU 2) ドライバ バックエンドドライバ

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

    DomUはバックエンド/フロントエンドを介して Dom0にハードウェアアクセスを依頼する • Qubes OSはこの仕組みをセキュリティに応用
  11. Correctnessによるセキュリティ • 正しさを担保する – コード監査 – デベロッパー教育 • Microsoft Security

    Development Lifecycleとか – テスト • ファジング – “安全”なプログラミング言語 • 実際のところ徹底できてないよね
  12. Isolationによるセキュリティ • 同じアプリケーションでも別の使い方がある • 例えばブラウザ – 社内インフラへのアクセス – ショッピング –

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

    カーネル空間とユーザー空間の分離 – chroot – systrace – SELinux – BSDのセキュアレベル • でもOSの機能だけじゃ安全とは言えない
  14. 概念図 • App Domain • Strage Domain • Network Domain

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

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

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

    X Window System – アプリケーションのウィンドウにドメイン名とドメ イン固有の色を表示するだけ
  18. 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
  19. VMの保護 • VM保護に関連する研究 • Overshadow[ASPLO08] – VMMからゲストOSのコンテキストを取得 – メモリアクセス時にページを暗号化 –

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

    Direct Memory Access – CPUを経由せずハードウェアから直接メモリを読み 書きする
  21. Intel TXT • Trustという概念 – 全てが期待通りに動くこと – 身元を明らかにするIdentityとそれを獲得する Measurement –

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

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

    bootloader →  (SRTM) → os → (DRTM) → hypervisor (thx @yuzuhara)
  24. VM間の通信 • Qubes OSは以下の機能を持つ – クリップボード共有 – 仮想ドライブを経由したファイル移動 • Cross

    VM(VM間)の脆弱性は狙われやすい • LiveMigration時にrootkitを挿入する[BlackHat DC08] • 物理キャッシュから鍵を覗き見るCross VM Side Channel Attack[CCS12] – 悪意のVMから連続してキャッシュを叩いた時のレ スポンスで他のVMからのアクセスを推定
  25. まとめ • アプリケーションを用途毎にドメイン化 • ドメイン単位でXenのVMを作るアプローチで セキュアVMを実現 • GUIの仮想化によるシームレスな操作 • Intel

    VT-dによるDMAプロテクション • Intel TXTによるストレージの保護 • VM固有のキーによるファイルシステムの保護