SoK: Shining Light on Shadow Stacks
Nathan Burow, Xinping Zhang, Mathias Payer
SoK: Shining Light on Shadow Stacks Nathan Burow , Xinping Zhang, - - PowerPoint PPT Presentation
SoK: Shining Light on Shadow Stacks Nathan Burow , Xinping Zhang, Mathias Payer Control-Flow Hijacking (CFH) Microsoft: 70% of bugs are memory corruptions Control and Data Planes are interleaved Memory corruption Control-Flow
Nathan Burow, Xinping Zhang, Mathias Payer
2
Data Code Pointer
3
Data Code Pointer
4
5
fptr()
6
fptr()
7
8
ret
9
10
11
[1] Burow et. al. “Control-flow integrity: Precision, security, and performance.” CSUR 2017.
12
Program Stack
Return Address Stack Canary
Array Pointer
13
Program Stack
Return Address Stack Canary
Array Pointer
14
Program Stack
Return Address Stack Canary
Array Pointer
15
Program Stack
Return Address Stack Canary
Array Pointer
16
Program Stack
Return Address Stack Canary
Array Pointer
17
Program Stack
ROP Pointer Stack Canary
Array Pointer
18
foo() bar()
Return Address Return Address
Program Stack Shadow Stack
Return Address
Return Address
19
Program Stack
ROP Pointer Stack Canary
Array Pointer
Shadow RA
Shadow Stack
20
Program Stack
ROP Pointer Stack Canary
Array Pointer
Shadow RA
Shadow Stack
21
Program Stack
ROP Pointer Stack Canary
Array Pointer
Shadow RA
Shadow Stack
22
23
24
[1] T. H. Dang, P. Maniatis, and D. Wagner, “The performance cost of shadow stacks and stack canaries,” in AsiaCCS ’15 [2] T.-c. Chiueh and F.-H. Hsu, “Rad: A compile-time solution to buffer overflow attacks,” in ICDCS ’01 [3] L. Davi, A.-R. Sadeghi, and M. Winandy, “Ropdefender: A detection tool to defend against return-oriented programming attacks,” in AsiaCCS’11
[1] [2],[3]
Stack Stack Shadow Stack 8MB 8MB constant Direct Mapping Stack Stack Shadow Stack 8MB Indirect Mapping Grows on demand
25
26
27
28
29
30
31
32
33
34