Transcript PowerPoint
MiniBox: A Two-Way Sandbox for x86 Native Code Yanlin Li, Jonathan McCune, James Newsome Adrian Perrig, Brandon Baker and Will Drewry ATC’14 June 19-20th,2014 Cho, Hyojae CONTENTS 1. Introduction 2. Sandbox 3. Two-way Memory Isolation 4. Combine Sandbox and Isolation 5. MiniBox 6. Evaluation 2 1. Introduction Platform as a Service • 상업적으로 많이 사용되는 클라우드 컴퓨팅 • 백만 개의 애플리케이션이 구글 앱 엔진상에서 작동 • 시스템 보호를 위한 샌드박스 구조 요구 • OS를 위험한 앱으로부터 보호 3 2. Sandbox Current Sandbox • 위험한 앱이 게스트 OS를 공격하는 것으로부터 보호 • One-way protection • 단방향 보호의 문제점 • OS가 앱을 공격하는 것에는 무방비 4 2. Sandbox Goal: Two-way Sandbox • OS Protection • 애플리케이션이 OS를 공격하는 것을 방어 • Application Protection • OS가 애플리케이션을 공격하는 것을 방어 5 3. Two-way Memory Isolation • Intel Software Guard Extensions (SGX) • Hardware-based two-way memory isolation • TrustVisor • Hypervisor-based two-way memory isolation • Only isolate a Piece of Application Logic (PAL) from the OS • 취약점 존재 6 3. Two-way Memory Isolation 메모리 메모리 샌드박스 애플리케이션 공격 위험 운영체제 Env switch 공격 위험 (DMA 등) 시스템 콜 운영체제 기존의 샌드박스 Isolation Module Intel SGX or TrustVisor 7 4. Combine Sandbox and Isolation Option #1 • Non-sensitive PAL에 샌드박스 구조 사용 • 애플리케이션에게 다량의 인터페이스 노출 • 앱 포팅 필요 8 4. Combine Sandbox and Isolation Option #2 • 전체적으로 샌드박스 구조 사용 • 애플리케이션에게 다량의 인터페이스 노출 • 앱 포팅 필요없음 • Iago attack*에 취약 *Iago attacks: Why the system call API is a bad untrusted RPC interface, ASPLOS `13 9 4. Combine Sandbox and Isolation Challanges • One-way sandbox + Two-way memory isolation • 목표 • One-way sandbox와 Two-way memory isolation을 통합하기 위한 시스템을 디자인 • OS보호 및 애플리케이션 보호를 위한 모듈 간 인터페이스를 최대한 안전하고 간략하게 • Iago attack으로부터 애플리케이션 보호 10 5. MiniBox Overview • One-way sandbox + hypervisor-base two-way memory isolation • Google NaCl + TrustVisor • 샌드박스 컴포넌트를 서비스 런타임 모듈과 OS 보호 모듈로 분리 • 앱 실행 지원을 위한 격리된 메모리 공간 포함 • 앱에게 system call interface 제공 • sensitive(민감한) system call / non-sensitive system call 분리 • 격리된 환경에서 sensitive call 핸들 • 안전하고 간소화된 OS 보호 모듈, 애플리케이션 보호 모듈 간 communication interface 제공 11 5. MiniBox Native Client • 웹 상에서의 Native Module 실행을 위한 샌드박스 기술 • Software Fault Isolation (SFI) • 각각의 Native Module은 각각의 segmentation 안에서 실행 • Disassembler & Validator • Native Module 내에 SFI를 해제하는 코드가 없음을 보장 12 5. MiniBox Architecture 13 5. MiniBox Minimized and Secure Communication Interface • 간소화된 두 환경 간 통신 인터페이스 제공 • 프로그램 로드 : program loader • 런 타임 : only system call interface • 두 환경 간의 안전한 통신 제공 • 애플리케이션은 system call 호출 • Hypervisor가 두 환경 사이에 system call parameter와 return value 전달 • OS 보호 모듈은 system call parameter를 검사 14 5. MiniBox Implementation • 프로토타입 구현 • TrustVisor (Ver. 0.2.1) • 구글 Native Client (NaCl) 오픈소스 프로젝트 • Intel and AMD 멀티코어 프로세서 지원 • 게스트 OS로 Ubuntu 10.04 사용 15 6. Evaluation • Microbenchmarks • System call overhead • Application Benchmarks • I/O-bound applications • CPU-bound applications • MiniBox, MiniBox 디버깅 모드, NaCl간 성능 비교 • MiniBox 상의 OS는 MIEE 상의 메모리 정보를 볼 수 없음 • 디버깅 모드에서는 hypervisor의 기능 해제 -> NaCl에서 제공하는 디버깅 툴 사용 가능. 16 6. Evaluation System Call Overhead • OS가 핸들하는 system call의 경우 • 각각의 call은 environment switch 요구 • 높은 오버헤드 • MIEE 내부에서 발생하는 system call의 경우 • NaCl과 비슷한 퍼포먼스 17 6. Evaluation I/O-Bound Application (Zlib) • Zilb 작업 수행 • 1MB의 파일을 파일시스템으로부터 읽어서 압축하기 • MiniBox 상의 File I/O는 높은 오버헤드를 가짐 • 적절한 캐시 정책을 통해 성능 향상 기대 18 6. Evaluation I/O-Bound Application (Zlib) • Zilb 작업 수행 • 1MB의 파일을 파일시스템으로부터 읽어서 압축하기 • MiniBox 상의 File I/O는 높은 오버헤드를 가짐 • 적절한 캐시 정책을 통해 성능 향상 기대 19 6. Evaluation CPU-Bound Application • AES Encryption • 128B의 평문 텍스트를 200,000회 암호화 • 비트코인 • 200,000번의 SHA-256 연산 수행 • NaCl과 성능 동일, 오버헤드 없음 20 7. Conclusion • 실제적인 two-way sandbox 구현 최초 시도 • 네이티브 x86 코드를 위한 two-way protection의 일반적 아키텍처 제안 • PaaS 클라우드 플랫폼 등 two-way protection이 필요한 곳에 널리 사용될 것으로 전망 21 7. Criticism 22