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