CS-527 Software Security
Bug finding techniques
- Asst. Prof. Mathias Payer
Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/
CS-527 Software Security Bug finding techniques Asst. Prof. Mathias - - PowerPoint PPT Presentation
CS-527 Software Security Bug finding techniques Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/ Spring 2017 Testing Table of Contents Testing
Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/
Testing
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 2 / 33
Testing
Mathias Payer (Purdue University) CS-527 Software Security 2017 3 / 33
Testing
Mathias Payer (Purdue University) CS-527 Software Security 2017 4 / 33
Testing
1 i n t max = 0; 2 f o r
3
4
5
6
7
8 } Mathias Payer (Purdue University) CS-527 Software Security 2017 5 / 33
Testing
Mathias Payer (Purdue University) CS-527 Software Security 2017 6 / 33
Testing
1Andreas Zeller and Ralf Hildebrandt, Simplifying and Isolating
Mathias Payer (Purdue University) CS-527 Software Security 2017 7 / 33
Fuzzing
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 8 / 33
Fuzzing
Mathias Payer (Purdue University) CS-527 Software Security 2017 9 / 33
Fuzzing
Mathias Payer (Purdue University) CS-527 Software Security 2017 10 / 33
Fuzzing
Mathias Payer (Purdue University) CS-527 Software Security 2017 11 / 33
Static analysis
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 12 / 33
Static analysis
2Reading material: Al Bessey et al., A Few Billion Lines of Code Later: Using
Mathias Payer (Purdue University) CS-527 Software Security 2017 13 / 33
Static analysis
Mathias Payer (Purdue University) CS-527 Software Security 2017 14 / 33
Static analysis
Mathias Payer (Purdue University) CS-527 Software Security 2017 15 / 33
Static analysis
Mathias Payer (Purdue University) CS-527 Software Security 2017 16 / 33
Static analysis
Mathias Payer (Purdue University) CS-527 Software Security 2017 17 / 33
Static analysis
Mathias Payer (Purdue University) CS-527 Software Security 2017 18 / 33
Symbolic execution
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 19 / 33
Symbolic execution
Mathias Payer (Purdue University) CS-527 Software Security 2017 20 / 33
Symbolic execution
Mathias Payer (Purdue University) CS-527 Software Security 2017 21 / 33
Symbolic execution
Mathias Payer (Purdue University) CS-527 Software Security 2017 22 / 33
Symbolic execution
Mathias Payer (Purdue University) CS-527 Software Security 2017 23 / 33
Symbolic execution
Mathias Payer (Purdue University) CS-527 Software Security 2017 24 / 33
Formal verification
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 25 / 33
Formal verification
Mathias Payer (Purdue University) CS-527 Software Security 2017 26 / 33
Formal verification
Mathias Payer (Purdue University) CS-527 Software Security 2017 27 / 33
Formal verification
1 x = a ; 2 y = x + 1; 3 z = y − 1; 1 x = a && 2 y = x + 1 && 3 z = y − 1
Mathias Payer (Purdue University) CS-527 Software Security 2017 28 / 33
Formal verification
1 i n t
2
3
4
5
6
7
8 9
10
11
12 } 1 i n t
2
3
4
5
6
7
8
9
10
11
12 } 1 2 3
4 5
6 7
8
9
10
11
Mathias Payer (Purdue University) CS-527 Software Security 2017 29 / 33
Formal verification
Mathias Payer (Purdue University) CS-527 Software Security 2017 30 / 33
Summary and conclusion
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 31 / 33
Summary and conclusion
Mathias Payer (Purdue University) CS-527 Software Security 2017 32 / 33
Summary and conclusion
Mathias Payer (Purdue University) CS-527 Software Security 2017 33 / 33