specification of concretization and symbolization
play

Specification of Concretization and Symbolization Policies in - PowerPoint PPT Presentation

Specification of Concretization and Symbolization Policies in Symbolic Execution S ebastien Bardin joint work with Robin David, Josselin Feist, Laurent Mounier, Marie-Laure Potet, Thanh Dihn Ta, Jean-Yves Marion CEA LIST (Paris-Saclay,


  1. Specification of Concretization and Symbolization Policies in Symbolic Execution S´ ebastien Bardin joint work with Robin David, Josselin Feist, Laurent Mounier, Marie-Laure Potet, Thanh Dihn Ta, Jean-Yves Marion CEA LIST (Paris-Saclay, France) ISSTA 2016 Bardin et al. ISSTA 2016 1/ 27

  2. Preamble Takeaway Dynamic Symbolic Execution (DSE) : powerful approach to verif. and testing three key ingredients : path predicate computation & solving, path search, concretization & symbolization policy (C/S) C/S is an essential part, yet mostly not studied many policies (one per tool), no systematic study of C/S undocumented, unclear tools : often a single hardcoded policy, no reuse across tools Our goal : establish C/S as a proper field of study [focus first on specification] CSML, a specification language for C/S � ◮ clear, non-ambiguous [documentation] ◮ tool independent [reuse, sharing, tuning] ◮ executable [input for tools] implemented in BINSEC � an experimental comparison of C/S policies � Bardin et al. ISSTA 2016 2/ 27

  3. Preamble About formal verification Between Software Engineering and Theoretical Computer Science Goal = proves correctness in a mathematical way Key concepts : M | = ϕ Kind of properties absence of runtime error M : semantic of the program pre/post-conditions ϕ : property to be checked | = : algorithmic check temporal properties Bardin et al. ISSTA 2016 3/ 27

  4. Preamble From (a logician’s) dream to reality Industrial reality in some key areas, especially safety-critical domains hardware, aeronautics [airbus], railroad [metro 14], smartcards, drivers [Windows], certified compilers [CompCert] and OS [Sel4], etc. Ex : Airbus Verification of runtime errors [Astr´ ee] functional correctness [Frama-C] numerical precision [Fluctuat] source-binary conformance [CompCert] ressource usage [Absint] Bardin et al. ISSTA 2016 4/ 27

  5. Preamble Next big challenge Apply formal methods to less-critical software Very different context : no formal spec, less developer involvement, etc. Difficulties robustness [w.r.t. software constructs] no place for false alarms scale sometimes, not even source code Bardin et al. ISSTA 2016 5/ 27

  6. Preamble Next big challenge Apply formal methods to less-critical software Very different context : no formal spec, less developer involvement, etc. Difficulties DSE as a first step robustness [w.r.t. software constructs] very robust no place for false alarms (mostly) no false alarm scale scale in some ways sometimes, not even source code ok for binary code Bardin et al. ISSTA 2016 5/ 27

  7. DSE in a nutshell Introducing DSE Dynamic Symbolic Execution [since 2004-2005 : dart, cute, pathcrawler ] a very powerful formal approach to verification and testing many tools and successful case-studies since mid 2000’s ◮ SAGE, Klee, Mayhem, etc. ◮ coverage-oriented testing, bug finding, exploit generation, reverse arguably one of the most wide-spread use of formal methods Very good properties mostly no false alarm, robust, scale, ok for binary code Bardin et al. ISSTA 2016 6/ 27

  8. DSE in a nutshell Introducing DSE Dynamic Symbolic Execution [since 2004-2005 : dart, cute, pathcrawler ] a very powerful formal approach to verification and testing many tools and successful case-studies since mid 2000’s ◮ SAGE, Klee, Mayhem, etc. ◮ coverage-oriented testing, bug finding, exploit generation, reverse arguably one of the most wide-spread use of formal methods Very good properties mostly no false alarm, robust, scale, ok for binary code Key idea : path predicate [King 70’s] consider a program P on input v , and a given path σ a path predicate ϕ σ for σ is a formula s.t. v | = ϕ σ ⇒ P(v) follows σ intuitively the conjunction of all branching conditions old idea, recent renew interest [powerful solvers, dynamic+symbolic] Bardin et al. ISSTA 2016 6/ 27

  9. DSE in a nutshell DSE int main () { σ := ∅ int x = input(); PC := ⊤ int y = input(); x = input() int z = 2 * y; y = input() z = 2 * y if (z == x) { if (x > y + 10) σ := { x → x 0 , y → y 0 , z → 2 y 0 } failure; } z == x success; PC := ⊤ ∧ 2 y 0 = x 0 } x > y + 10 PC := ⊤ ∧ 2 y 0 � = x 0 given a path of the program automatically find input that PC := ⊤ ∧ 2 y 0 = x 0 ∧ x 0 > y 0 + 10 follows the path PC := ⊤ ∧ 2 y 0 = x 0 ∧ x 0 ≤ y 0 + 10 then, iterate over all paths Bardin et al. ISSTA 2016 7/ 27

  10. DSE in a nutshell DSE int main () { σ := ∅ int x = input(); PC := ⊤ int y = input(); Three key ingredients x = input() int z = 2 * y; y = input() path predicate computation & solving z = 2 * y if (z == x) { if (x > y + 10) path search σ := { x → x 0 , y → y 0 , z → 2 y 0 } failure; C/S policy } z == x success; PC := ⊤ ∧ 2 y 0 = x 0 } x > y + 10 PC := ⊤ ∧ 2 y 0 � = x 0 given a path of the program automatically find input that PC := ⊤ ∧ 2 y 0 = x 0 ∧ x 0 > y 0 + 10 follows the path PC := ⊤ ∧ 2 y 0 = x 0 ∧ x 0 ≤ y 0 + 10 then, iterate over all paths Bardin et al. ISSTA 2016 7/ 27

  11. DSE in a nutshell Path predicate computation Usually easy to compute [forward, introduce new logical variables at each step] Loc Instruction input(y,z) 0 1 w := y+1 x := w + 3 2 if (x < 2 * z) [True branch] 3 4 if (x < z) [False branch] Path predicate (input Y 0 et Z 0 ) Bardin et al. ISSTA 2016 8/ 27

  12. DSE in a nutshell Path predicate computation Usually easy to compute [forward, introduce new logical variables at each step] Loc Instruction input(y,z) 0 1 w := y+1 x := w + 3 2 if (x < 2 * z) [True branch] 3 4 if (x < z) [False branch] Path predicate (input Y 0 et Z 0 ) let W 1 � Y 0 + 1 in Bardin et al. ISSTA 2016 8/ 27

  13. DSE in a nutshell Path predicate computation Usually easy to compute [forward, introduce new logical variables at each step] Loc Instruction input(y,z) 0 1 w := y+1 x := w + 3 2 if (x < 2 * z) [True branch] 3 4 if (x < z) [False branch] Path predicate (input Y 0 et Z 0 ) let W 1 � Y 0 + 1 in let X 2 � W 1 + 3 in Bardin et al. ISSTA 2016 8/ 27

  14. DSE in a nutshell Path predicate computation Usually easy to compute [forward, introduce new logical variables at each step] Loc Instruction input(y,z) 0 1 w := y+1 x := w + 3 2 if (x < 2 * z) [True branch] 3 4 if (x < z) [False branch] Path predicate (input Y 0 et Z 0 ) let W 1 � Y 0 + 1 in let X 2 � W 1 + 3 in X 2 < 2 × Z 0 Bardin et al. ISSTA 2016 8/ 27

  15. DSE in a nutshell Path predicate computation Usually easy to compute [forward, introduce new logical variables at each step] Loc Instruction input(y,z) 0 1 w := y+1 x := w + 3 2 if (x < 2 * z) [True branch] 3 4 if (x < z) [False branch] Path predicate (input Y 0 et Z 0 ) let W 1 � Y 0 + 1 in let X 2 � W 1 + 3 in X 2 < 2 × Z 0 ∧ X 2 ≥ Z 0 Bardin et al. ISSTA 2016 8/ 27

  16. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  17. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  18. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  19. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  20. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  21. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

  22. DSE in a nutshell Path Exploration input : a program P output : a test suite TS covering all feasible paths of Paths ≤ k ( P ) pick a path σ ∈ Paths ≤ k ( P ) compute a path predicate ϕ σ of σ solve ϕ σ for satisfiability SAT(s) ? get a new pair < s, σ > loop until no more path to cover Bardin et al. ISSTA 2016 9/ 27

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend