MiniBox: A Two-Way Sandbox for x86 Native Code(USENIX ATC'14)の紹介

MiniBox: A Two-Way Sandbox for x86 Native Code(USENIX ATC'14)の紹介

https://atnd.org/events/54159 で話した資料です。

5c6358240ec94522f70cf7b0e657f58f?s=128

Yuma Kurogome

August 07, 2014
Tweet

Transcript

  1. 論文紹介: MiniBox: A Two-Way Sandbox for x86 Native Code[Yanlin Li

    et al., USENIX ATC'14] 2014/08/06 システム系論文輪読会 @ntddk ※図表はUSENIXでのスライドより
  2. 背景 • PaaS(Platform as a Service) – クラウドコンピューティングサービスが提供するソ フトウェアの構築・実行基盤 •

    サンドボックス – アプリケーションからOSを守るために配備されて いる – OSからアプリケーションを守る仕組みがない • ユーザーの資産はOSではなくアプリケーション • サービス提供者の意図しない悪性コードがOSで動いてい たら
  3. 関連研究 • NaCl • TrustVisor

  4. NaCl Native Client: A Sandbox for Portable, Untrusted x86 Native

    Code[Bennet Yee et al., Oakland'09] • One-way sandbox • Webブラウザ内部でネイティブコードを実行 – x86, ARMに対応 – イメージは「Chromeで動くセキュアなCygwin」 • Software Fault Isolation – 信頼できないコードをフォールトドメインに隔離 • jmpの飛び先を32byte境界に制限 • メモリ読み書き位置の制限
  5. TrustVisor TrustVisor: Efficient TCB Reduction and Attestation[Jonathan M. McCune et

    al., OAKLAND'10] • Two-way memory isolation mechanism • Pieces of Application Logic(PAL)という単位 – self-contained security-sensitive codeblocksを守 るのがTrustVisorの目的 • ハイパーバイザを用いてPALを保護 – legacy OS and DMA-capable devicesから – Nested pagesをもとにPALを隔離 – µTPMを用いてPALを検証
  6. 関連研究 • NaCl(Google) – ブラウザ内部でネイティブコードを実行するone- way sandbox • TrustVisor(CMU CyLab)

    – ハイパーバイザとTPMを用いてOSからsecurity- sensitiveなコードを分割するtwo-way memory isolation mechanism
  7. Isolationの問題点 • アプリケーションのPALのみを保護 • Intel SGX – ハードウェアベースのtwo-way isolation •

    TrustVisor – ハイパーバイザベースのtwo-way isolation
  8. Sandboxの問題点 • サンドボックスはnon-isolatedなPALも実行し てしまう – Sensitive PALとnon-sensistive PALのどちらもサン ドボックスに押し込んでしまっている •

    開発者はアプリケーションの分割(実質的な移 植)を必要とする
  9. 問題点 Iago Attacks: Why the system call API is a

    bad untrusted RPC interface[Stephen Checkoway et al, ASPLOS 2013] • 悪意のOSカーネルからサンドボックス内のプ ロセスを攻撃する手法
  10. 提案手法 • One-way sandboxとtwo-way memory isolation mechanismの両立 – アプリケーションとOSどちらも保護する •

    インターフェイスのセキュア化 • Iago attacksに対するアプリケーションの保護
  11. 実装 • TrustVisor v0.2.1 ベース • NaCl • Intel, AMDのマルチコアプロセッサをサポート

    • ゲストOSはUbuntu 10.04 • Debugging modeではハイパーバイザによる isolationを無効化する代わりにアプリケーショ ンをgdbでデバッグすることが可能
  12. None
  13. 実装 • LDTを辿ってTLSの整合性を保つ • Iago attacks対策としてLibOSによるsensitive callsのisolation – Dynamic memory

    management – Thread local storage management – Multi-thread management – Secure file I/O
  14. 評価 • Non-sensitive system callsにおけるオー バーヘッド

  15. まとめ • 既存のサンドボックスはPALを分割せずに保護 する点で問題があった • ハイパーバイザと連携してPALを分割した上で サンドボックスでアプリケーションを保護する 手法が提案された • NaClとGolangの連携が推し進められているの

    で、そのうちGAEに導入されるかも