Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

関連研究 ● NaCl ● TrustVisor

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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