CS-527 Software Security
Memory Safety
- Asst. Prof. Mathias Payer
Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/
CS-527 Software Security Memory Safety Asst. Prof. Mathias Payer - - PowerPoint PPT Presentation
CS-527 Software Security Memory Safety Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/ Spring 2017 Eternal War in Memory Table of Contents
Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/
Eternal War in Memory
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 2 / 38
Eternal War in Memory
Mathias Payer (Purdue University) CS-527 Software Security 2017 3 / 38
Eternal War in Memory
Mathias Payer (Purdue University) CS-527 Software Security 2017 4 / 38
Eternal War in Memory
1 void
2
3
4
5
6 } 7 vuln ( e x p l o i t ) ; Mathias Payer (Purdue University) CS-527 Software Security 2017 5 / 38
Eternal War in Memory
Mathias Payer (Purdue University) CS-527 Software Security 2017 6 / 38
Eternal War in Memory
Mathias Payer (Purdue University) CS-527 Software Security 2017 7 / 38
Memory safety
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 8 / 38
Memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 9 / 38
Memory safety
1See Mike Hicks definition of memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 10 / 38
Memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 11 / 38
Memory safety Spatial memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 12 / 38
Memory safety Spatial memory safety
1 char ∗ ptr = malloc (24) ; 2 f o r
3
4 } Mathias Payer (Purdue University) CS-527 Software Security 2017 13 / 38
Memory safety Temporal memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 14 / 38
Memory safety Temporal memory safety
1 char ∗ ptr = malloc (24) ; 2 f r e e ( ptr ) ; 3 f o r
4
5 } Mathias Payer (Purdue University) CS-527 Software Security 2017 15 / 38
Memory safety Towards a definition
Mathias Payer (Purdue University) CS-527 Software Security 2017 16 / 38
Memory safety Towards a definition
Mathias Payer (Purdue University) CS-527 Software Security 2017 17 / 38
Memory safety Towards a definition
Mathias Payer (Purdue University) CS-527 Software Security 2017 18 / 38
Memory safety Towards a definition
Mathias Payer (Purdue University) CS-527 Software Security 2017 19 / 38
Enforcing memory safety
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 20 / 38
Enforcing memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 21 / 38
Enforcing memory safety
Mathias Payer (Purdue University) CS-527 Software Security 2017 22 / 38
SoftBound
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 23 / 38
SoftBound
2SoftBound: Highly Compatible and Complete Spatial Memory Safety for C.
Mathias Payer (Purdue University) CS-527 Software Security 2017 24 / 38
SoftBound
Mathias Payer (Purdue University) CS-527 Software Security 2017 25 / 38
SoftBound
1 s t r u c t
2
3 } b ; 4 b . balance = 0; 5 char ∗ id = &(b . acctID ) ; 6 lookup(& id )−>bse = &(b . acctID ) ; 7 lookup(& id )−>bnd = &(b . acctID ) +3; 8 char ∗p = id ;
9 char ∗ p bse = lookup(& id )−>bse ; 10 char ∗p bnd = lookup(& id )−>bnd ; 11 do { 12
13
14
15
16 } while
Mathias Payer (Purdue University) CS-527 Software Security 2017 26 / 38
SoftBound
1 i f
2 i f
3 value = ∗p
Mathias Payer (Purdue University) CS-527 Software Security 2017 27 / 38
SoftBound
Mathias Payer (Purdue University) CS-527 Software Security 2017 28 / 38
CETS
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 29 / 38
CETS
Mathias Payer (Purdue University) CS-527 Software Security 2017 30 / 38
CETS
1 i n t
2 p = malloc (8) ; 3 . . . 4 q = p ; 5 . . . 6 f r e e (p) ; 7 r = malloc (8) ; 8 . . . 9 . . . = ∗q ; Mathias Payer (Purdue University) CS-527 Software Security 2017 31 / 38
CETS
1 i n t
2 void
3
4
5 } 6 i n t
7
8
9 } Mathias Payer (Purdue University) CS-527 Software Security 2017 32 / 38
CETS
Mathias Payer (Purdue University) CS-527 Software Security 2017 33 / 38
CETS
Mathias Payer (Purdue University) CS-527 Software Security 2017 34 / 38
CETS
1
2
3
4
Mathias Payer (Purdue University) CS-527 Software Security 2017 35 / 38
Summary and conclusion
1
2
3
4
5
6
Mathias Payer (Purdue University) CS-527 Software Security 2017 36 / 38
Summary and conclusion
Mathias Payer (Purdue University) CS-527 Software Security 2017 37 / 38
Summary and conclusion
Mathias Payer (Purdue University) CS-527 Software Security 2017 38 / 38