edward j. schwartz, thanassisavgerinos , david brumley presented by: vaibhav rastogi

40
All You Ever Wanted to Know About Dynamic Taint Analysis & Forward Symbolic Execution (but might have been afraid to ask) Edward J. Schwartz, ThanassisAvgerinos, David Brumley Presented by: Vaibhav Rastogi 1

Upload: lluvia

Post on 16-Feb-2016

34 views

Category:

Documents


0 download

DESCRIPTION

All You Ever Wanted to Know About Dynamic Taint Analysis & Forward Symbolic Execution ( but might have been afraid to ask ). Edward J. Schwartz, ThanassisAvgerinos , David Brumley Presented by: Vaibhav Rastogi. The Root of All Evil. Humans write programs. This Talk: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

1

All You Ever Wanted to Know About Dynamic Taint Analysis & Forward

Symbolic Execution (but might have been afraid to ask)

Edward J. Schwartz, ThanassisAvgerinos, David Brumley

Presented by: Vaibhav Rastogi

Page 2: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

2

The Root of All Evil

Humans write programs

This Talk:Computers Analyzing Programs Dynamically at Runtime

Page 3: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

3

Two Essential Runtime Analyses

Dynamic Taint Analysis:What values are derived from this source?

Forward Symbolic Execution:What input will make execution reach this line of code?

Malware Analysis

Privacy Leakage Detection

Vulnerability Detection

Automatic Test-case Generation

Input Filter Generation

Malware Analysis

Page 4: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

4

ContributionsFormalize English descriptions• An algorithm / operational

semantics

Technical highlights, caveats, issues, and

unsolved problems that are deceptively hard

Systematize recurring themes in a wealth of

previous work

Page 5: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

5

Contributions

Page 6: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

6

Dynamic Taint Analysis

How it Works

Example Policies

Issues

Page 7: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

7

Example

Page 8: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

8

Example

Input is tainted

Page 9: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

9

Taint IntroductionTainted Untainted

x

Input is tainted

Page 10: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

10

Taint Introduction

Var Val Taint ( T | F)x 7 T

Page 11: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

11

Taint PropagationTainted Untainted

x

Data derived from user input

is tainted

xy 42

Page 12: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

12

Taint Propagation

Var Val Taint ( T | F)x 7 Ty 49 T

Page 13: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

13

Taint CheckingTainted Untainted

x

Policy violation detected

xy 42

y

Page 14: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

14

So What?

x

xy 42

y

Exploit Detection

Tainted return

address

Page 15: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

15

Taint Checking

Var Val Taint ( T | F)x 7 Ty 49 T

Page 16: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

16

Taint Semantics in SIMPIL

Page 17: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

17

SIMPIL Operational Semanticstl;dr

Page 18: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

18

Operational Semantics for Tainting

Page 19: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

19

Operational Semantics for Tainting

Page 20: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

20

Example Taint Semantics

Page 21: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

21

Example Taint Policy

Page 22: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

22

Dynamic Tainting Issues

Tainted Addresses• To taint, or not to taint

Undertainting• Control flows discussed earlier

Overtainting• Sanitization

Time of Detection vs. Time of Attack• Overwritten return address detected only at return

Page 23: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

23

Dynamic Tainting Issues

x

xy 42

y

Overwritten return address detected only at return

Page 24: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

24

Tainted Addresses

Don’t taint y• Table indices, e.g. ,a[i] == i

Taint y• tcpdump uses packet data

to compute function pointers

Page 25: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

25

Dilemma

Undertainting:False Negatives Overtainting:

False Positives

Page 26: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

26

Forward Symbolic Execution

How it Works

Challenges

Proposed Solutions

Page 27: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

27

Example

bad_abs(x is input) if (x < 0) return -x if (x = 0x12345678) return -xreturn x

Page 28: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

28

Example

232 possible inputs

0x12345678

bad_abs(x is input) if (x < 0) return -x if (x = 0x12345678) return -xreturn x

What input will execute this line of code?

Page 29: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

29

Workingbad_abs(x is

input)

if (x < 0)

return -xif (x = 0x12345678)

return -xreturn x

F T

TF

x ≥ 0 x < 0

x ≥ 0 &&x == 0x12345678

x ≥ 0 &&x != 0x12345678

Page 30: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

30

Workingbad_abs(x is

input)

if (x < 0)

return -xif (x = 0x12345678)

return -xreturn x

F T

TF

x ≥ 0 x < 0

x ≥ 0 &&x == 0x12345678

x ≥ 0 &&x != 0x12345678

What input will execute this line of code?

Page 31: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

31

Operational Semantics

Page 32: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

32

Operational Semantics

Page 33: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

33

Challenges

Exponential Number of Paths

Symbolic Memory

System Calls

Page 34: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

34

Exponential Number of Paths

Page 35: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

35

Exploration Strategies

•Bounded necessary – else loops mayn’t terminate!Bounded Depth

First Search•Possibly different weights to different pathsRandom Paths

•Mix symbolic and concrete execution•Make symbolic execution follow a concrete

execution path

Concolic Execution

Page 36: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

36

Symbolic memory

• Example: tables

• Aliasing issues• Solutions:– Make unsound assumptions– Let the SMT solver do the work– Perform alias analysis

• A static analysis – may not be acceptable

• Related Problem: Symbolic jumps

addr1 = get_input()store(addr1, v)z = load(addr2)

Page 37: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

37

Symbolic Jumps

Explore jump targets found in concrete execution

Let the solver solve it

Do static analysis

The pc depends on the user input

Page 38: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

38

System and Library Calls

• What are effects of such calls?

• Manual summarization is possible in some cases

• Use results from concrete execution– Not sound

Page 39: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

39

Symbolic Execution is not Easy

• Exponential number of paths

• Exponentially sized formulas with substitution

• Solving a formula is NP-complete

s + s + s + s + s +s + s + s + s + s + s + s +s = 42

Page 40: Edward J. Schwartz,  ThanassisAvgerinos , David  Brumley Presented by:  Vaibhav  Rastogi

40

Conclusion

• Dynamic Taint Analysis and Forward Symbolic Execution both extensively used– A number of options explored

• This talk provided– Overview of the techniques– Applications– Issues and state-of-the-art solutions