|
|
1 | (14) |
|
1.1 Common Vulnerabilities Due to String Manipulation Errors |
|
|
4 | (2) |
|
1.2 Examples of String Manipulating Code and Errors |
|
|
6 | (6) |
|
|
12 | (3) |
|
2 String Manipulating Programs and Difficulty of Their Analysis |
|
|
15 | (8) |
|
2.1 A Simple String Manipulation Language |
|
|
15 | (1) |
|
2.2 Automated and Precise Verification of String Programs Is Not Possible |
|
|
16 | (2) |
|
2.3 A Richer String Manipulation Language |
|
|
18 | (4) |
|
|
22 | (1) |
|
3 State Space Exploration |
|
|
23 | (14) |
|
3.1 Semantics of String Manipulation Languages |
|
|
23 | (3) |
|
3.2 Explicit State Space Exploration |
|
|
26 | (3) |
|
3.2.1 Forward Reachability |
|
|
27 | (1) |
|
3.2.2 Backward Reachability |
|
|
28 | (1) |
|
|
29 | (6) |
|
3.3.1 Symbolic Reachability |
|
|
30 | (1) |
|
|
31 | (4) |
|
|
35 | (2) |
|
4 Automata Based String Analysis |
|
|
37 | (20) |
|
4.1 A Lattice for Sets of Strings |
|
|
37 | (1) |
|
4.2 Symbolic Reachability Analysis with Automata |
|
|
38 | (3) |
|
4.3 Symbolic Automata Representation |
|
|
41 | (4) |
|
4.3.1 MTBDD Representation |
|
|
43 | (1) |
|
4.3.2 Modeling Non-Determinism Using Symbolic DFA |
|
|
44 | (1) |
|
4.3.3 Symbolic vs. Explicit DFA |
|
|
45 | (1) |
|
4.4 Post-Condition Computation |
|
|
45 | (6) |
|
4.4.1 Concatenation and Replace Operations |
|
|
46 | (1) |
|
4.4.2 Post-Condition of Concatenation |
|
|
47 | (1) |
|
4.4.3 Post-Condition of Replacement |
|
|
48 | (3) |
|
4.5 Pre-Condition Computation |
|
|
51 | (4) |
|
4.5.1 Pre-Condition of Concatenation |
|
|
51 | (2) |
|
4.5.2 Pre-Condition of Replacement |
|
|
53 | (2) |
|
|
55 | (2) |
|
5 Relational String Analysis |
|
|
57 | (12) |
|
5.1 Relations Among String Variables |
|
|
57 | (2) |
|
|
59 | (1) |
|
5.3 Relational String Analysis |
|
|
59 | (2) |
|
|
60 | (1) |
|
5.4 Construction of Multi-Track DFAs for Basic Word Equations |
|
|
61 | (4) |
|
5.5 Symbolic Reachability Analysis |
|
|
65 | (3) |
|
5.5.1 Forward Fixpoint Computation |
|
|
66 | (2) |
|
|
68 | (1) |
|
|
68 | (1) |
|
6 Abstraction and Approximation |
|
|
69 | (14) |
|
|
69 | (1) |
|
|
70 | (4) |
|
|
74 | (2) |
|
6.4 Composing Abstractions |
|
|
76 | (1) |
|
6.5 Automata Widening Operation |
|
|
77 | (3) |
|
|
80 | (3) |
|
7 Constraint-Based String Analysis |
|
|
83 | (20) |
|
7.1 Symbolic Execution with String Constraints |
|
|
83 | (4) |
|
7.2 Automata-Based String Constraint Solving |
|
|
87 | (6) |
|
7.2.1 Mapping Constraints to Automata |
|
|
87 | (6) |
|
7.3 Relational Constraint Solving with Multi-Track DFA |
|
|
93 | (3) |
|
7.3.1 Relational String Constraint Solving |
|
|
94 | (1) |
|
7.3.2 Relational Integer Constraint Solving |
|
|
95 | (1) |
|
7.3.3 Mixed String and Integer Constraint Solving |
|
|
95 | (1) |
|
|
96 | (6) |
|
7.4.1 Automata-Based Model Counting |
|
|
99 | (2) |
|
7.4.2 Counting All Solutions within a Given Bound |
|
|
101 | (1) |
|
|
102 | (1) |
|
8 Vulnerability Detection and Sanitization Synthesis |
|
|
103 | (20) |
|
8.1 Vulnerability Detection and Repair |
|
|
104 | (7) |
|
|
111 | (1) |
|
8.3 Vulnerability Analysis |
|
|
112 | (2) |
|
8.4 Vulnerability Signatures |
|
|
114 | (2) |
|
8.5 Relational Signatures |
|
|
116 | (3) |
|
8.6 Sanitization Generation |
|
|
119 | (3) |
|
|
122 | (1) |
|
9 Differential String Analysis and Repair |
|
|
123 | (26) |
|
9.1 Formal Modeling of Validation and Sanitization Functions |
|
|
126 | (7) |
|
9.1.1 Post- and Pre-Image of a Sanitizer |
|
|
130 | (3) |
|
9.2 Discovering Client- and Server-Side Input Validation and Sanitization Inconsistencies |
|
|
133 | (3) |
|
9.2.1 Extracting and Mapping Input Validation and Sanitization Functions at the Client- and the Server-Side |
|
|
133 | (1) |
|
9.2.2 Inconsistency Identification |
|
|
134 | (2) |
|
9.3 Semantic Differential Repair for Input Validation and Sanitization |
|
|
136 | (11) |
|
9.3.1 Differential Repair Problem |
|
|
140 | (1) |
|
9.3.2 Differential Repair Algorithm |
|
|
141 | (6) |
|
|
147 | (2) |
|
|
149 | (6) |
|
|
149 | (1) |
|
|
150 | (1) |
|
|
151 | (2) |
|
|
153 | (2) |
|
11 A Brief Survey of Related Work |
|
|
155 | (10) |
|
|
155 | (3) |
|
11.1.1 Grammar Based String Analysis |
|
|
155 | (2) |
|
11.1.2 Automata-Based String Analysis |
|
|
157 | (1) |
|
11.1.3 Hybrid String Analysis |
|
|
158 | (1) |
|
11.2 String Constraint Solvers |
|
|
158 | (3) |
|
11.2.1 Automata-Based Solvers |
|
|
159 | (1) |
|
|
160 | (1) |
|
11.2.3 Combination of Theories |
|
|
161 | (1) |
|
11.2.4 Model Counting String Constraint Solvers |
|
|
161 | (1) |
|
11.3 Bug and Vulnerability Detection in Web Applications |
|
|
161 | (2) |
|
11.3.1 Client-Side Analysis |
|
|
162 | (1) |
|
11.3.2 Server-Side Analysis |
|
|
162 | (1) |
|
11.4 Differential Analysis and Repair |
|
|
163 | (2) |
|
11.4.1 Differential Analysis |
|
|
163 | (1) |
|
11.4.2 Differential Repair |
|
|
164 | (1) |
|
|
165 | (2) |
References |
|
167 | |