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

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 で話した資料です。

Yuma Kurogome

August 07, 2014
Tweet

More Decks by Yuma Kurogome

Other Decks in Research

Transcript

  1. 論文紹介:
    MiniBox: A Two-Way Sandbox for x86 Native
    Code[Yanlin Li et al., USENIX ATC'14]
    2014/08/06
    システム系論文輪読会
    @ntddk
    ※図表はUSENIXでのスライドより

    View Slide

  2. 背景
    ● PaaS(Platform as a Service)
    – クラウドコンピューティングサービスが提供するソ
    フトウェアの構築・実行基盤
    ● サンドボックス
    – アプリケーションからOSを守るために配備されて
    いる
    – OSからアプリケーションを守る仕組みがない
    ● ユーザーの資産はOSではなくアプリケーション
    ● サービス提供者の意図しない悪性コードがOSで動いてい
    たら

    View Slide

  3. 関連研究
    ● NaCl
    ● TrustVisor

    View Slide

  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境界に制限
    ● メモリ読み書き位置の制限

    View Slide

  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を検証

    View Slide

  6. 関連研究
    ● NaCl(Google)
    – ブラウザ内部でネイティブコードを実行するone-
    way sandbox
    ● TrustVisor(CMU CyLab)
    – ハイパーバイザとTPMを用いてOSからsecurity-
    sensitiveなコードを分割するtwo-way memory
    isolation mechanism

    View Slide

  7. Isolationの問題点
    ● アプリケーションのPALのみを保護
    ● Intel SGX
    – ハードウェアベースのtwo-way isolation
    ● TrustVisor
    – ハイパーバイザベースのtwo-way isolation

    View Slide

  8. Sandboxの問題点
    ● サンドボックスはnon-isolatedなPALも実行し
    てしまう
    – Sensitive PALとnon-sensistive PALのどちらもサン
    ドボックスに押し込んでしまっている
    ● 開発者はアプリケーションの分割(実質的な移
    植)を必要とする

    View Slide

  9. 問題点
    Iago Attacks: Why the system call API is a bad untrusted
    RPC interface[Stephen Checkoway et al, ASPLOS 2013]
    ● 悪意のOSカーネルからサンドボックス内のプ
    ロセスを攻撃する手法

    View Slide

  10. 提案手法
    ● One-way sandboxとtwo-way memory
    isolation mechanismの両立
    – アプリケーションとOSどちらも保護する
    ● インターフェイスのセキュア化
    ● Iago attacksに対するアプリケーションの保護

    View Slide

  11. 実装
    ● TrustVisor v0.2.1 ベース
    ● NaCl
    ● Intel, AMDのマルチコアプロセッサをサポート
    ● ゲストOSはUbuntu 10.04
    ● Debugging modeではハイパーバイザによる
    isolationを無効化する代わりにアプリケーショ
    ンをgdbでデバッグすることが可能

    View Slide

  12. View Slide

  13. 実装
    ● LDTを辿ってTLSの整合性を保つ
    ● Iago attacks対策としてLibOSによるsensitive
    callsのisolation
    – Dynamic memory management
    – Thread local storage management
    – Multi-thread management
    – Secure file I/O

    View Slide

  14. 評価
    ● Non-sensitive system
    callsにおけるオー
    バーヘッド

    View Slide

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

    View Slide