Parallelizing Security Checks on Commodity Hardware Ed Nightingale Microsoft Research Dan Peek, Peter Chen Jason Flinn University of Michigan.
Download
Report
Transcript Parallelizing Security Checks on Commodity Hardware Ed Nightingale Microsoft Research Dan Peek, Peter Chen Jason Flinn University of Michigan.
Parallelizing Security Checks
on Commodity Hardware
Ed Nightingale
Microsoft Research
Dan Peek, Peter Chen
Jason Flinn
University of Michigan
Run-time security checks
Provide run-time intrusion detection/prevention
Many powerful checks have been proposed
Examples: Taint-analysis, on-access virus scanning,
system call graph modeling
Often impose high performance penalties
What makes run-time checks slow?
ASPLOS 2008
2
Problem
Application
& security check
Application
A
B
C
D
PAUSE
RESUME
PAUSE
RESUME
PAUSE
RESUME
PAUSE
A
B
1)
2)
3)
4)
Begin application
Pause execution
Run security check
Resume application
C
D
Checks may slow performance by 10x
ASPLOS 2008
3
Solution
Speck (Speculative parallel check)
Parallelize checks across many cores
Provide security equivalent to sequential check
Use three techniques
Transparent kernel replay system
Operating system support for speculative execution
Buffer dependent output until checks complete
ASPLOS 2008
4
Accelerating checks with Speck
cpu0
Speculate!
cpu1
cpu2
cpu3
cpu4
A
B
C
D
1) Run process speculatively
2) Execute check in parallel
Speed of parallelization without sacrificing safety!
3) Start later checks in parallel to earlier ones
ASPLOS 2008
5
Outline
Introduction
Implementing Speck
Parallelizing security checks
ASPLOS 2008
6
Example: Executing sequentially
PAUSE
A
All state ‘frozen’ and available to security check
Examples – heap, address space, file name,
system call, value of a single address in memory
ASPLOS 2008
7
Example: Executing in parallel
cpu0
A
cpu1
fork()
How does security check get app state?
Speck uses fork() to copy state to other core
ASPLOS 2008
8
Example:
Executing
in
parallel
cpu0
cpu1
cpu2
epoch 0
epoch 1
A
B
C
D
E
F
fork()
fork()
B
C
E
F
Amortize fork by grouping checks into epochs
What happens when app interacts with OS?
ASPLOS 2008
9
Safely executing system calls
Some system calls affect state of calling process
Other system calls may affect other processes
Introduces non-determinism in execution
Other processes may be compromised as well
Some system calls generate output
Output to screen or network cannot be undone
ASPLOS 2008
10
Replaying non-determinism
Uninst Process
data
Inst Clone
Execute read()
Execute read()
OS
Speck replays system calls that affect process state
Some system calls (mmap) re-executed
Signal delivery limited to exit from system call
Prevents instrumented clone from diverging
ASPLOS 2008
11
Tracking causal dependencies
Speculator [sosp05] tracks causal dependencies
Supports FIFOs, pipes, UNIX sockets etc.
Undo log associated with each object
Do not handle multi-threading (MP replay hard)
All dependent objects rolled back on failure
Uninstrumented process terminated on failure
Uninstrumented process can safely run ahead
ASPLOS 2008
12
Handling output commits
Problem: Some system calls create output
Output to network or screen buffered
When all checks within epoch complete
dependent output released
ASPLOS 2008
13
Equivalence/Safety
Assume attacker cannot compromise
Replay system ensures code equivalence
Speck in-kernel replay system
Speculator in-kernel causal dependency tracking
Instrumented clone does not diverge
Speculator prevents permanent damage
Speculator rolls back all dependent state on failure
ASPLOS 2008
14
Outline
Introduction
Implementing Speck
Parallelizing security checks
ASPLOS 2008
15
Choosing security checks
All checks depend upon uninstrumented process
Amount of state determines Speck strategy
Some checks require little state or run infrequently
No need for fork and replay…just pause app and ship state
Some checks depend upon result of earlier check
Independent checks easy to parallelize
Many dependencies make parallelization harder
Example: taint analysis
ASPLOS 2008
16
Using Speck to parallelize checks
Process memory analysis
System call analysis
Sensitive data leaks
On-access virus scanner
Data flow analysis
Taint analysis
ASPLOS 2008
17
Process Memory Analysis
Checking for transient leaks of sensitive data
Our check examines every memory store
Looks for signature of sensitive data
Examines all 16 byte windows around address
Use Pin dynamic binary rewriting tool
Later checks do not depend on earlier checks
ASPLOS 2008
18
MPlayer video decoding
Speck
Sequential
Frames per second
40
35
30
25
20
15
10
5
0
1
2
3
4
5
6
7
8
Number of cores
Speck 7.5x faster with 8 cores
Video plays in real time
ASPLOS 2008
19
On-access virus scanner
Scan files on-access by a process
Our check scans each file on-close
Many different policies -- on-read on-write etc.
Emulates news/email server
Implemented using ClamAV libraries (180K sigs)
Little state is required and checks independent
Speck does not use fork and replay for this check
ASPLOS 2008
20
PostMark benchmark
Transactions per second
Speck
Sequential
7000
6000
5000
4000
3000
2000
1000
0
1
2
3
4
5
6
7
8
Number of cores
2.8x more TPS
ASPLOS 2008
21
Taint analysis
Trace flow of data from untrusted sources
Instrument application at instruction granularity
Update map of tainted addresses at run-time
Ensure certain addresses are not tainted
Later checks depend on result of earlier checks
Running in parallel cannot tell whether address was
tainted during prior check
ASPLOS 2008
22
Parallelizing taint analysis
cpu0
A
B
C
D
cpu1
fork()
…cpu n
cpu2
A
fork()
B
C
D
log
log
New algorithm minimizes sequential processing
ASPLOS 2008
23
Dynamic taint compression
Dependency logs were very large
Time to process longer than to run sequential check
Only care about dependencies before check
Addresses and registers often overwritten
Eliminate unimportant dependencies
Reduce log size 6x
ASPLOS 2008
24
Taint analysis: MPlayer
Frames per second
Speck
Sequential
Speck no opt
10
9
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
Number of cores
2x speedup on 8-cores
ASPLOS 2008
25
Choosing a strategy
Check
State required/
When required
Checks
independent?
Fork
& replay?
Work to
make ||?
Memory
analysis
Memory
On store
Yes
Yes
None
Virus
check
File name
On file close
Yes
No
A little
Taint
analysis
Rep. of addr space
On data flow inst.
No
Yes
A lot
Fork & replay – need to attach check at fork
No fork & replay – need to accept concurrent
requests
ASPLOS 2008
26
Conclusion
Run-time security checks can be slow
Speck accelerates run-time checks
Parallelizing across many cores
Provides safety of executing checks sequentially
ASPLOS 2008
27