program analysis via satisfiability modulo path programs

35
Program Analysis via Satisfiability Modulo Path Programs William Harris, Sriram Sankaranarayanan, Franjo Ivančić, Aarti Gupta POPL 2010 1

Upload: jodie

Post on 23-Feb-2016

29 views

Category:

Documents


0 download

DESCRIPTION

Program Analysis via Satisfiability Modulo Path Programs. William Harris , Sriram Sankaranarayanan , Franjo Ivan č i ć , Aarti Gupta. POPL 2010. Assertions as Specifications. Lightweight Often automatic from semantics Null-pointer dereferences Buffer overflows. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Program Analysis via Satisfiability  Modulo Path Programs

1

Program Analysis viaSatisfiability Modulo Path Programs

William Harris, Sriram Sankaranarayanan,Franjo Ivančić, Aarti Gupta

POPL 2010

Page 2: Program Analysis via Satisfiability  Modulo Path Programs

2

Assertions as Specifications

• Lightweight

• Often automatic from semantics– Null-pointer dereferences– Buffer overflows

Page 3: Program Analysis via Satisfiability  Modulo Path Programs

3

proc. foo(int* p, int pLen, int mode)assume (pLen > 1);int off, L := 1, bLen := 0;if (p = NULL) pLen := -1;if (mode = 0)

off := 1;else

off := 0;while (L <= pLen)

bLen := L – off;L := 2 * L;

assert(!p || bLen <= pLen);

Page 4: Program Analysis via Satisfiability  Modulo Path Programs

4

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

… Æ p = 0 Æ pLen = -1

… Æ p = 0 Æ mode = 0

… Æ p = 0… Æ p =

0

False

Path Program:Left Branch, Left Branch

... Æ p = 0

L <= pLenbLen := L – offL := L * 2

Page 5: Program Analysis via Satisfiability  Modulo Path Programs

5

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

… Æ p = 0

… Æ p = 0 Æ mode 0

… Æ p = 0… Æ p =

0

False

Path Program:Left Branch, Right Branch

… Æ p = 0

L <= pLenbLen := L – offL := L * 2

Page 6: Program Analysis via Satisfiability  Modulo Path Programs

6

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ pLen ¸ 1

bLen · pLenbLen · pLen

False

Path Program:Right Branch, Left Branch

L <= pLenbLen := L – offL := L * 2

Page 7: Program Analysis via Satisfiability  Modulo Path Programs

7

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ p 0

L = 1 Æ bLen = 0Æ pLen ¸ 1

bLen · pLenbLen · pLen

False

Path Program:Right Branch, Right Branch

L <= pLenbLen := L – offL := L * 2

Page 8: Program Analysis via Satisfiability  Modulo Path Programs

L := 1bLen := 0pLen >= 1

p != 0

mode != 0

off := 1

L > pLen

p != 0&& bLen > pLen

bLen · pLen

False 8

bLen · pLen

bLen · pLen

bLen · pLenbLen · pLen

Control-FlowAbstraction

p != 0&& bLen > pLen

L := 1bLen := 0pLen >= 1

L <= pLenbLen := L – offL := L * 2

Page 9: Program Analysis via Satisfiability  Modulo Path Programs

9

Key Issues

Need:• abstraction• refinementthat allow us to analyze a small set of path

programs, generalize proofs.

Page 10: Program Analysis via Satisfiability  Modulo Path Programs

10

Road Map

• Satisfiability Modulo Path Programs (SMPP)

• Experimental Evaluation

Page 11: Program Analysis via Satisfiability  Modulo Path Programs

11

Abstraction

1. Encode unproven path programs as propositional formula.

2. Query SAT solver for solution.

3. From the solution, extract an unverified path program.

Page 12: Program Analysis via Satisfiability  Modulo Path Programs

q0

q1

q9

q8

q7q6

q5q4

q3

q2

Propositional Variablesfor Edges

Page 13: Program Analysis via Satisfiability  Modulo Path Programs

13

CFG Form Depiction Encoding

entry edges

error edges

Encoding Path Programs

q0

q0 = True

q9 q9 = True

Page 14: Program Analysis via Satisfiability  Modulo Path Programs

14

Encoding Path Programs

q4

q3

q5

q3 ! exactlyOne(q4, q5)q2 ! exactlyOne(q4, q5)

q4 ! exactlyOne(q3, q2)q5 ! exactlyOne(q3, q2)

q2

Page 15: Program Analysis via Satisfiability  Modulo Path Programs

15

Initial Abstraction of Example

q0

Æ q0 $ exactlyOne(q1, q2)Æ q1 $ q3

Æ exactlyOne(q3, q2) $ exactlyOne(q4, q5)Æ (q4 $ q6) Æ (q5 $ q7)Æ exactlyOne(q6, q7) $ q8

Æ q8 $ q9

Æ q9

q0

Æ q0 $ exactlyOne(q1, q2) Æ q1 $ q3

Æ exactlyOne(q3, q2) $ exactlyOne(q4, q5) Æ (q4 $ q6) Æ (q5 $ q7) Æ exactlyOne(q6, q7) $ q8

Æ q8 $ q9

Æ q9

¤ :=

Page 16: Program Analysis via Satisfiability  Modulo Path Programs

q0

q1

q9

q8

q7q6

q5q4

q3

q2

16

A Path Program froma SAT Solution q0

q2

q5

q7

q8

q9

Page 17: Program Analysis via Satisfiability  Modulo Path Programs

17

Refinement

• Apply program analysis oracle to determine safety of path program

• If safe, then encode safety in the abstraction

Page 18: Program Analysis via Satisfiability  Modulo Path Programs

18

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L <= pLenbLen := L – offL := L * 2

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ p 0

L = 1 Æ bLen = 0Æ pLen ¸ 1

bLen · pLenbLen · pLen

False

Apply Analysis Oracle: Naïve

Page 19: Program Analysis via Satisfiability  Modulo Path Programs

19

Prop. Encoding:Naïve

q6

q9

q1

q7

q4 q5

q3

q2

q0

q8

Page 20: Program Analysis via Satisfiability  Modulo Path Programs

20

Naïve Blocking Clause

¤ := ¤ Æ : (q0 Æ q2 Æ q5 Æ q7 Æ q8 Æ q9)

Page 21: Program Analysis via Satisfiability  Modulo Path Programs

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLenP != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

bLen · pLenÆ off = 1

False21

L <= pLenbLen := L – offL := L * 2

Apply Analysis Oracle:Local Repair

L = 1 Æ bLen = 0 Æ pLen ¸ 1 Æ p 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1Æ p 0 Æ mode 0

bLen · pLenÆ off = 1

Page 22: Program Analysis via Satisfiability  Modulo Path Programs

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLenp != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ pLen ¸ 1 Æ p 0

bLen · pLenÆ off = 1

bLen · pLen Æ off = 1

False

L = 1 Æ bLen = 0 Æ pLen ¸ 1

bLen · pLen

bLen · pLen

L = 1 Æ bLen = 0 Æ pLen ¸ 1Æ p 0 Æ Mode 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

22

Apply Analysis Oracle: Local Repair

L := 1bLen := 0pLen >= 1

p != 0&& bLen > pLen

pLen := -1

L <= pLenbLen := L – offL := L * 2

Page 23: Program Analysis via Satisfiability  Modulo Path Programs

23

Prop. Encoding:Local Repair q0

q1

q2

q3

q4 q5

q6 q7

q8

q9

Page 24: Program Analysis via Satisfiability  Modulo Path Programs

24

Blocking Clause

(: (q0 Æ q9) Ç q3): (q0 Æ q2 Æ q5 Æ q7 Æ q8 Æ q9)

¤ := ¤ Æ

with Local Repair

Page 25: Program Analysis via Satisfiability  Modulo Path Programs

25

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

… Æ p = 0 Æ pLen = -1

… Æ p = 0 Æ mode = 0

… Æ p = 0… Æ p =

0

False

One MorePath Program Suffices

... Æ p = 0

p != 0&& bLen > pLen

p = 0

L <= pLenbLen := L – offL := L * 2

Page 26: Program Analysis via Satisfiability  Modulo Path Programs

26

Experiments

Page 27: Program Analysis via Satisfiability  Modulo Path Programs

27

Zitser Benchmarks

• Real world programs:– wu-ftpd– bind– sendmail

• Checked for buffer overflow bugs• BLAST proves more properties on average• SMPP completes faster (>100x)

Page 28: Program Analysis via Satisfiability  Modulo Path Programs

28

Larger Benchmarks

• Real-world programs:– thttpd– ssh-server– xvidcore

• Checked function pre, post conditions for buffer accesses

• SMPP proved ~35% of thousands of properties

Page 29: Program Analysis via Satisfiability  Modulo Path Programs

29

Conclusion

• SMPP uses a symbolic abstraction refinement scheme for control-flow.

• SMPP is slightly coarser than predicate abstraction, but converges much faster.

Page 30: Program Analysis via Satisfiability  Modulo Path Programs

30

Questions?

Page 31: Program Analysis via Satisfiability  Modulo Path Programs

L := 1bLen := 0pLen >= 1

p != 0

mode != 0

off := 1L > pLen

p != 0&& bLen > pLen

bLen · pLen

False

bLen · pLen

bLen · pLen

bLen · pLen

bLen · pLen

: (bLen · pLen)

: (bLen · pLen)

: (bLen · pLen)

: (bLen · pLen)

: (bLen · pLen)

Predicate Abstraction

L <= pLenbLen := L – offL := L * 2

Page 32: Program Analysis via Satisfiability  Modulo Path Programs

32

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

L = 1 Æ bLen = 0 Æ p 0

L = 1 Æ bLen = 0Æ pLen ¸ 1

bLen · pLenbLen · pLen

False

SMPP: Path Program 1 L := 1bLen := 0pLen >= 1

p != 0&& bLen > pLen

pLen := -1

L <= pLenbLen := L – offL := L * 2

Page 33: Program Analysis via Satisfiability  Modulo Path Programs

33

L := 1bLen := 0pLen >= 1

p = 0

pLen := -1

p != 0

mode != 0

off := 0 off := 1

L > pLen

p != 0&& bLen > pLen

mode = 0

L = 1 Æ bLen = 0 Æ pLen ¸ 1

… Æ p = 0 Æ pLen = -1

… Æ p = 0 Æ mode = 0

… Æ p = 0… Æ p =

0

False

SMPP: Path Program 2

... Æ p = 0

p != 0&& bLen > pLen

p = 0

L <= pLenbLen := L – offL := L * 2

Page 34: Program Analysis via Satisfiability  Modulo Path Programs

34

Problem StatementSMT

Given a determinedisjunctive formula satisfiabilityusing theory solvers for conjunctive formulas.

SMPP

branching program safetyanalyses path programs.

Page 35: Program Analysis via Satisfiability  Modulo Path Programs

35

Key Analog

• Abstraction using a propositional encoding

• Refinement using blocking clauses conjoined to abstraction