people | mit csail€¦ · kbouncer partial control-flow integrity against rop transparent...

177
!"#$%&! !()* +(,() - !*.)*/0*1 2342

Upload: others

Post on 12-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&!'!()*'+(,()'

-'!*.)*/0*1'2342'

Page 2: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

#5*678'

!"#$% !&'"(% )'$*+$,%

449:;' <8=>*'?6,)1@A=B6'!*)'$867B/(C8=B6' D8687'!(6E8'

4293;' DFB@6A*19'$G"'/(=58=B6' H(AE8I(,'"BIJAE1B68K(,'

429L3' M&?!D9'N?OP'OB1'&*)*1B5*6*B@,'!J,)*/,' QB*I'"B1R@*)'

494;' #@)B)B/(A'F(681J'!)1@A)@1*'$867B/(C8=B6' #65'%@('

49;3' STA(*6)'N*)*1/(6(,=A'H@I=)E1*87(65')E1B@5E'!AE*7@I*'$*I8U8=B6'

&*/(65'%@('

292;' V(0*1)J'#1AE()*A)@1*' N**.'WEB,E'

:933' !"#$%&!'#1AE()*A)@1*'!.*AX'>3X4Y'M18.'@.' !(/E8'!*)E@/87E8>86'

Page 3: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

&(5EI(5E),'

•  ?!$9'<8=>*'(/.I*/*6)8=B6'– G>*1E*87'(,'3X2Z'#,'I([I*'8,';'I(6*,'B\'+*1(IB5'AB7*'

•  N?OP9'G6'E*)*1B5*6*B@,',J,)*/,]B6]AE(.'– G>*1E*87'^()EB@)')855(65'_3Z`'^()E')855(65'I(6*81')B'.*1A*6)85*'B\'/*/B1J')E8)'(,')8(6)*7'

•  $G"9'H!$'FI@*'&8)'M(66*1'•  $F!9'!.(6'Ba'B6'O(1/^81*',*A@1()J'

Page 4: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+,-#.(&/%*&0"(1.234"#.(&

!"#"$%&'#("!"#$%&'(&)%"*(+(,'&%!"

#$%&'&%"-$..$%!"/01(')%"*(,)+23%!"

4&+5$"4(657+$85$9$0%

Page 5: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

56%&7+.89%2&

:)8$2;"

! 42%6(+%"$,("'$,1('2"%&+&'$,"

<  )*+*,%=&08)>%")0"?@A!"/08,)&8")0"/BC"

! 42%6(+"%(D7,&62"+$67,("E76"F$,"F,)+"G$>'(%%"

! /H$DI%"8&JD7'6"6)"8(9(').!"E76">&8('2"8(.')2$E'("

<  4&+&'$,"G$>%")0"%&+&'$,"+$D5&0(%"

2

Page 6: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

:(&;<"2=9%&>&?+3$%@8A&?.B(9."1&

1. Hackers insert malicious URL

2. Users visits a website

3. User redirected to bad website

4. Malware installed surreptitiously

3

Page 7: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

5"9C&D$%+$3%B&

!  -,)E'(+"

!  4)'73)0"!  K0%6,7D3)0"4(6"B$08)+&L$3)0"

!  4)M>$,("N5)&D(%"<  4&01'(OI(2"<  -$1(O+)8("

!  P$,8>$,("N5)&D(%"<  4&+7'$3)0"B(%7'6%"

<  K+.'(+(06$3)0"

!  4(D7,&62"/0$'2%&%"!  N)0D'7%&)0"

4

Page 8: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

E.,(*%+3(F&G.2.F%(%3*A&

!  Q&9(,%&F2R"<  S)"6>)"%2%6(+%"%5)7'8"E("$'&I("

<  S)6">&65)76".,)E'(+%"

!  T),D("$H$DI%"6)"E("6$&'),O+$8("

<  U)>",(67,0O)FO&09(%6+(06"F),"8(9(').+(06"

<  S)"')01(,"$%"'7D,$39("

5

Page 9: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

'()*+,-#.(&/%*&0"(1.234"#.(&

!  V$D5"+$D5&0("5$%"$"8&W(,(06"K4/"

<  N)8("F),")0("8)(%0 6">),I")0"$0)65(,"

<  V9(0"E(H(,"&F"65&%"K4/"D$0"E("I(.6"%(D,(6"

!  -,(9(06%""--"D)8(O&0X(D3)0"$H$DI%"<  KF"+$'&D&)7%" D)8( "&0%(,6(8"&06)"$..'&D$3)0"0)6"

&0"')D$'"K4/!"&6"D$00)6"(?(D76("

<  Y0$765),&L(8"1(0(,&D"E&0$,2"D$00)6"(?(D76(

6

Page 10: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

G.B&*.&'/0 34%H&

!  -,)E'(+$3DZ"N$00)6",($''2"5$9(".,)D(%%),%">&65"

70&[7("K4/ %"

!  \0("%)'73)0]"V0D,2.6">&65",$08)+"I(2%")F"^?(8"

>&865"

<  =&65"_`@OE&6"I(2%!"'$,1("(0)715"I(2O%.$D("aF),"0)>b"

<  45)7'8"0)6"8&%,7.6"(%6$E'&%5(8"%2%6(+"%6$08$,8%"a)*+*!"9&,67$'"+(+),2"%7E%2%6(+!"D$D5(%b"

7

Page 11: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/.IB"+%&?%)3F(&D=#.()&@&;(-+A=#.(&

!  K8($''2"K4B"%5)7'8"E("$'>$2%")0"

!  P)>"%6,)01"$0"(0D,2.3)0"6)"$'')>c"<  N'$%%&D".(,F),+$0D(dF70D3)0$'&62"6,$8(O)W"

!  =($I"(0D,2.3)0"

<  e\B!"6,$0%.)%&3)0"

<  U)>")9(,5($8"E76"$'%)"')>"%(D7,&62"

<  B($%)0">52"($,'&(,"%)M>$,(OE$%(8"&+.'(+(06$3)0%"8&80 6"6$I("

)W"

!  46,)01"(0D,2.3)0"<  /V4!"B4/"

<  P&15"%(D7,&62!"E76"$'%)"5&15")9(,5($8%"8

Page 12: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/.IB"+%&?%)3F(&D=#.()&>&J%A&K)"F%&L+"(,9"+3*A&

!  -(,"%2%6(+"

!  -(,".,&9&'(1("'(9('"

!  -(,".,)D(%%"

!  -(,"^'(">&65"(?(D76$E'("D)8("

!  -(,"a(?(D76$E'(b"+(+),2".$1("

!  \65(,%"a0(6>),I!"F70D3)0%!"&0%6,7D3)0%!")./*b"

9

Page 13: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/3(F9%@J%A&'/0&>&;-.)A)*%2&

1

2

3

4

5

7

6 8

9

Gateway

App DB

Key DB

User

Trusted Proxy

Developer

Manufacturer

10

Page 14: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

7"F%@M.1%&'/0&@&;-.)A)*%2&

User

App Gateway & DB

Key DB

_"

2

5

3

4

6

7

11

Page 15: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

G"+1B"+%&?%)3F(&D=#.()&

!  /',($82",7'(8")76"70&[7("0$39("K4/%"

12

Page 16: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

G"+1B"+%&?%)3F(&D=#.()&

!  /',($82",7'(8")76"70&[7("0$39("K4/%"

!  Q(D,2.6"X7%6"E(F),(d>&65&0".&.('&0("

U`"

KU_"

QU_"

C(+"

-&.('&0("13

Page 17: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

G"+1B"+%&?%)3F(&D=#.()&

!  /',($82",7'(8")76"70&[7("0$39("K4/%"

!  Q(D,2.6"X7%6"E(F),(d>&65&0".&.('&0("

!  Q(D,2.6"$6"U_OK"$08"U`"&06(,F$D("

U`"

KU_"

QU_"

C(+"

-&.('&0("14

Page 18: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

G"+1B"+%&?%)3F(&D=#.()&

!  /',($82",7'(8")76"70&[7("0$39("K4/%"

!  Q(D,2.6"X7%6"E(F),(d>&65&0".&.('&0("

!  Q(D,2.6"$6"U_OK"$08"U`"&06(,F$D("

!  Q(D,2.6"$6"U`"$08"+(+),2"&06(,F$D("

U`"

KU_"

QU_"

C(+"

-&.('&0("15

Page 19: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

E"$%"*)&B3*6&NOP2%2.+A&?%-+A=#.(&

!  P)>"8)">("8(D,2.6"&0%6,7D3)0%"(?D'7%&9('2c"<  :$1"8$6$"9%Z"&0%6,7D3)0"

<  :,$DI"+&%%",([7(%6%"6)"^17,("&F"D$D5("^''"&%"QdK"

!  S)6"(0)715"

<  Q&%$'')>"D,)%%OQdK"D$D5("^''%"$E)9("

<  =52c"

16

Page 20: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/32,9"#.()&)6.BQ&

!  f(0D5+$,I%"F,)+"4-VN"N-Y"`IA!"1(+g"4-/BNdU&07?"$,D5&6(D67,("

!  _`h"D2D'("'$6(0D2"F),"8(D,2.3)0"

R%(-62"+C" ?%-.1%& NSPNO& NOPM%2.+A&

EL&.`" i`j`ZkiA" hZhhk" hZhhk"

1)E+I" `A`iZi`l" __Zi_k" hZ_Al"

5++(," igkjZkg`" hZhhi" hZhhk"

+DF" ``l@Zi_h" hZhh_" hZhh_"

0$+8" illkZ_hi" _Zhkj" hZh"

'&E[7$067+" gkjkZhk_" hZh_i" hZh_`"

'E+" _A`AZhk_" hZh" hZh"

/9(,$1(" kAiAZlk`" _Zl@`" hZh`A"17

Page 21: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

'2=9%2%(*"#.(&@&D=%(/7:0E&

MIL

IFQ L1 I-Cache

ITLB

Decode

Pipeline

To LSU

NIR/TIR 2

NIR/TIR 1

NIR/TIR 4

NIR/TIR 3

PC

br-pc/trap-pc

Schedule

From LSU

18

Page 22: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Implementation Simplicity

!  Minimal changes to hardware code –  For single-key, <5 lines –  For page-mode, ~500 lines

!  Requires software support too –  But software design relatively inexpensive

19

Page 23: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/%-,+3*A&:("9A)3)&@&7+.*%-#.()&

!  N)8("K0X(D3)0"/H$DI%"

!  fK\4df))6"-,)6(D3)0"

!  N)8("\EF7%D$3)0"

20

Page 24: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

/%-,+3*A&:("9A)3)&@&T,9(%+"8393#%)&

!  Q)(%"0)6"17$,$06(("&06(1,&62"<  B(.'$2"$08"%.'&D&01"$H$DI%"

<  N$0"E("&06(1,$6(8">&65"+($%7,(%">5&D5"8)"

!  43''"97'0(,$E'("6)"8$6$O8,&9(0"$H$DI%"

!  -$1(O+)8("K4B",([7&,(%"6,7%6(8"\4"

21

Page 25: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

5.&-.(-9,1%Q&

!  P)+)1(0(&62"E$8!"8&9(,%&62"1))8"

!  K4B".,)9&8(%"%D$'$E'("$08"0)0O8&%,7.39("8&9(,%&F2&01")..),670&62"

!  Q(9(').(8"5$,8>$,("K4B"%7..),6"F),"65("^,%6"3+("

<  #(,2"%&+.'("&+.'(+(06$3)0">&65"0(1'&1&E'(")9(,5($8%"

22

Page 26: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

U,%)#.()H&

23

Page 27: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

1

Defending against Return-Oriented Programming

Vasilis

Pappas, Michalis Polychronakis, Angelos

Keromytis

Columbia University

SPARCHS meeting –

September 6, 2012

Page 28: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

2

(Machine Code) Attacks and Defenses

Code Injection

W X

Code Reuse

ASLRReturn-Oriented

Programming?

Page 29: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

3

ASLR is not Fully Supported

Executable programs in Ubuntu

LinuxOnly 66 out of 1,298 binaries in /usr/bin [SAB11]

Popular third-party Windows applicationsOnly 2 out of 16 [Pop10]

Even applications that enable ASLR sometimes have statically mapped DLLs

EMET forced randomization

Page 30: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

4

Information Leaks Break ASLR [Ser12]

Page 31: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

5

Outline

Background

In-place code randomizationIEEE Security & Privacy 2012

kBouncerMicrosoft BlueHat

Prize v1.0 winner!

Future directions

Page 32: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

6

!!!!"#$$!!!!!

"#"""""""$!"#$$!!!%!

"#"""""""%!"#$$!!!&!

!"#$$!!!%!

"#""&"""""!"#$$!!!'!

!!!

'()*+(, -+,.

"#/00"""""12+2 .(#3.4!!!

"#/00"""$"12+2 ./#3.4!!!

"#/00"""%"1(,, .(#5 ./#3.4!!!

"#/00"""6"17+8

9./#:5 .(#3.4

.;2

<=4>+?;

.(#

@ $

./#

@ %

.(#

A@ ./#

./#

@ "#&"""""

B./#

@ .(#

Page 33: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

7

ROP Defenses

ROPdefender[DSW11]

DROP[CXS+09]

DROP++[CXH+11]

G-Free[OBL+10]

Return-less[LWJ+10]

CFL[BJF11]

Low

Source Code

Input

Hig

h

Runt

ime

Ove

rhea

d

Program Binary

Page 34: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

8

In-Place Code Randomization

Software diversification

Applicable on third-party applications

Zero (non-measurable) performance overhead

Page 35: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

9

Why In-Place?

Randomization usually changes the code sizeNeed to update the control-flow graph (CFG)

Accurate disassembly of stripped binaries is hardIncomplete CFG (data vs. code)Code resize not an option

Must randomize in-place!

Page 36: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

10

Code Transformations

Instruction Substitution

Instruction ReorderingIntra Basic BlockRegister Preservation Code

Register Reassignment

Page 37: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

11

Instruction Substitution

7+8

(*5"#$=72

(*5/**.( .(#59./2 "#0":

(,, 9.,#:5.,>3.4

7+8

(*5"#$()*

#+,-+*.( .(#59./2 "#0":

(,, 9.-":5.,>/)0+

1.#*2!"3$4!$!546

C" "$ 6< -6 0D &E 0" E" F0

C" "$ '$ 7$ 0D &E 0" E" F0

Page 38: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

12

Instruction Reordering (Intra Basic Block)

!"#$"#%&# &#'()*+*)

,(--()

./+012*( 34*567)*89

0C &$ $"

7+8

.(#59.=#A"#$":

E6

2G;H ./#

0C EI "- 7+8

./#59.=#A"#-:

6C -6 =72

.(#5./#

0I &$ "0 7+8

9.=#A"#0:5.(#

JK &K L*.

"#E=

EI

*089 .#"

"- 6C :; -+,!"'<

-6

;.=

Page 39: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

13

Instruction Reordering (Intra Basic Block)

0C &$ $"

7+8

.(#59.=#A"#$":

E6

2G;H ./#

0C EI "- 7+8

./#59.=#A"#-:

6C -6 =72

.(#5./#

0I &$ "0 7+8

9.=#A"#0:5.(#

JK &K L*.

"#E=

&$

>?( .("

$" 0I &$ "0 6C -6-@(

1.(" !"'AA5BC<B6,(+

Page 40: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

14

Register Preservation Code Reordering

*089 .#"*089 .8>7+8

./#5.=#*089 .@>7+8

.;>5.,#!!!

*:* .@>*:* .8>*:* .#"3.4

*089 .@>*089 .#"*089 .8>7+8

./#5.=#7+8

.;>5.,#!!!

*:* .8>*:* .#"*:* .@>3.4

'3+*+M

K2>*+M

Page 41: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

15

Register Reassignment

.(# .,>N>8. 3.M>+?;

OG?=4>+?12G;H .;>2G;H .,>7+8

.,>59./2A"#0:7+8

.(#59.,>A"#$&:4.;4 .(#5.(#LP

"#&<0"F&"C7+8

./#59./2A"#$":2G;H ./#*.( .=#59./2 "#&:2G;H .=#2G;H .,>=(** .(#!!!

OG?=4>+?12G;H .;>2G;H .,>7+8

.(#59./2A"#0:7+8

.,>59.,>A"#$&:4.;4 .,>5.,>LP

"#&<0"F&"C7+8

./#59./2A"#$":2G;H ./#*.( .=#59./2 "#&:2G;H .=#2G;H .-"=(** .@>!!!

Page 42: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

16

Implementation: Orp

Focused on the Windows platformCould be integrated in Microsoft’s EMET

CFG extraction using IDA ProImplicitly used registersLiveness analysis (intra and inter-function)Register categorization (arg., preserved, …)RandomizationBinary rewriting (relocations fixing, …)

Page 43: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

17

Evaluation

Correctness and performanceUsed Wine’s extensive test suite with randomized

versions of Windows DLLs

Randomization Coverage

Effectiveness against real-world exploits

Robustness against ROP Compilers

Page 44: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

18

Randomization Coverage

Dataset: 5,235 PE files (~0.5GB code) from Windows, Firefox, iTunes, Reader

Page 45: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

19

Real-World Exploits

Exploit/Reusable Payload Unique Gadgets Modifiable Combinations

Adobe Reader v9.3.4 11 6 287

Integard

Pro v2.2.0 16 10 322K

Mplayer

Lite

r33064 18 7 1.1M

msvcr71.dll (While Phosphorus) 14 9 3.3M

msvcr71.dll (Corelan) 16 8 1.7M

mscorie.dll

(White Phosphorus) 10 4 25K

mfc71u.dll (Corelan) 11 6 170K

Modifiable gadgets were not always directly replaceable!

Page 46: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

20

ROP Compilers

Is it possible to create a randomization-resistant ROP payload?

Using only the remaining non-randomized gadgets

Tested two ROP payload construction tools

mona.py:

constructs DEP+ASLR bypassing codeAllocate a WX buffer, copy shellcode, and jump to it

Q:

state-of-the-art ROP compiler [SAB11]Designed to be robust against small gadget sets

Page 47: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

21

ROP Compiler Results

Non-ASLR Code Base MonaOriginal Rand.

QOriginal Rand.

Adobe Reader v9.3.4

Integard

Pro v2.2.0

Mplayer

Lite

r33064

msvcr71.dll

mscorie.dll

mfc71u.dll

Both tools failed to construct ROP payloadsusing non-randomized code!

Page 48: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

22

kBouncer

Partial control-flow integrity against ROP

TransparentApplicable on third-party applicationsCompatible with code signing, self-modifying code, JIT, ...

LightweightLess than 5% runtime overhead

EffectivePrevents real-world exploits

Page 49: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

23

ROP disrupts the regular call path pattern

Legitimate code: ;.=

transfers control to the instruction right after the

corresponding (-++

legitimate call sites

ROP code: ;.=

transfers control to the first instruction of the

next gadget

arbitrary locations

Main idea: Runtime monitoring of ;.=

instructions’

targets

Page 50: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

24

Last Branch Record (LBR)

Introduced in the Intel Nehalem architecture

Stores the last 16 executed branches in a set of model-specific registers (MSR)

Can filter certain types of branches (relative/indirect calls/jumps, returns, ...)

Multiple advantagesZero overhead for recording the branchesFully transparent to the running applicationDoes not require source code or debug symbolsCan be dynamically enabled for any running application

Page 51: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

25

Monitoring Granularity

Non-zero overhead for reading the LBR cache (accessible only from kernel level)

Lower frequency

lower overhead

ROP code can run at any point

Higher frequency

higher accuracy

Page 52: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

26

Monitoring Granularity

Meaningful ROP code will eventually interact with the OS through system calls

Check for abnormal control transfers on system call entry

Page 53: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

27

Implementation

Working prototype for Windows 7 x64 SP1API interception using Detours for PatchGuard

compatibility

Uses only the Windows SDK and DDK (no third-party code)

Page 54: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

28

Runtime Overhead

Low overhead (1-6%) even when checking all syscalls

No false positives

Application real/usr/sys time # Call/Ret # SyscallFalse

PositivesOverhead

ms (%)

WM Player '!DC'E!D&CE!D&% '!D$F %G5H ! ''D$ I3JK

InternetExplorer CD&5E!D!3E!D!5 %D4F '5H ! 4D5 I4JK

AdobeReader 5D%%E%D'&E!D&5 '4D'F %!CH ! %$DC I%JK

Page 55: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

29

Effectiveness

Successfully prevented two real-world exploitsAdobe Reader: CVE-2010-2883MPlayer: EDB-ID-17124

Page 56: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

30

Page 57: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

31

Future Directions

The Limited LBR size (16) might allow for evasionInvoke syscall

through a path of legitimate branches

Seems hard, but might be possible...

ROP without returns (JOP)Characteristic runtime pattern (dispatcher gadget)Could be detected by enabling tracking of all indirect branchesMore pressure on the LBR cache...

What would be an ideal LBR size?

Other hardware features that could help?

Page 58: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

32

Function Call Return Value Profiling

Build profiles of benign program behavior for anomaly detection

Modeling based on a small window of previous function calls and their return values [LSC+08]

Explore the use of LBR or other hardware features for runtime checking

Page 59: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

33

Combining control and data flow tracking

Build models of expected behavior based on memory footprints

Causality of data inputs and generated outputsLifetime and interactions of program-specific objectsAccessed memory locations

Control + data flow information

Prototyping using Libdft

(Pin-based DFT)

Explore optimizations based on hardware features

Page 60: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

34

REASSURE

Enables software self-healing using rescue pointsRescue points reuse valid error codes returned by functions to handle unforeseen errors

Handles NULL pointer dereference bugs

Transforms fail-stop protection mechanisms to fail once

Generate a rescue point definition after observing an error the first time

Self-contained

Page 61: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

35

Future Work on REASSURE

Self-healing kernels

Challenge: achieve low performance overhead

Our approach: Hardware assisted self-healing

Use hardware transactional memory (HTM)Provide checkpoint/rollbackHandle concurrency efficiently

Software transactional self-healing prototype

Page 62: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

36

Summary

Return-Oriented Programming is increasingly used in real-world exploits

In-place code randomization and branch target monitoring prevent real exploits

Focus on hardware-assisted runtime detection and protection mechanisms

In-place code randomization prototype (Python) http://nsl.cs.columbia.edu/projects/orp

Page 63: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

37

References:;67&#< =671*4

>? ;674(? @A6 B()6 /C 8A6 -67C6B8 *4C/ +6(DE #%&#?A88-F""GA/H*(B?A*)-(A(BD?B/1"19 )80CC")6B07*89"=+()AIJ;KLI29-())?-HC?

:;JM&&< NHO(7H >? ;BAO(78G 68 (+? PF 6Q-+/*8 A(7H64*4R 1(H6 6()9? 3;NSTU ;6B07*89E #%&&?:,/-&%< J+*4

L(H

,/-? V6-"()+7

*1-+61648(8*/4 -7/R76)) *4 -/-0+(7 8A*7H -(789 O*4H/O) (--+*B(8*/4)E #%&%?A88-F "")6B04*(?B/1"RCQ"-HC"VN,IJ;KLI#%&%I-(-67?-HC?

:;A(%W< X/5(5

;A(BA(1? @A6 R6/16879 /C *44/B648 C+6)A /4 8A6 2/46F 768074 *48/ +*2B

O*8A/08 C04B8*/4 B(++)Y/4 8A6 QZ[\? ..;E #%%W?

:.VV]&%< ;86-A64 .A6BD/O(9

68 (+? L68074 /7*6486H -7/R7(11*4R O*8A/08 768074)? ..;E #%&%:M>=K&&< @9+67 M+68)BA

68 (+? >01- /7*6486H -7/R7(11*4RF ( 46O B+()) /C B/H6 760)6 (88(BD? J;TJ..;E #%&&?:K^_`&&2< a(4Rb*6

K0 68 (+? ,(BD6HE -7*48(2+6E (4H -/+91/7-A*B 768074 /7*6486H -7/R7(11*4RE LJTVE #%&&?:V;_&&< K0B() V(5*

68 (+? L/-H6C64H67F ( H686B8*/4 8//+ 8/ H6C64H (R(*4)8 768074 /7*6486H -7/R7(11*4R(88(BD)? J;TJ..;E #%&&

:.U;]%c< ,*4R .A64 68 (+? V7/-F V686B8*4R 768074 /7*6486H -7/R7(11*4R 1(+*B*/0) B/H6E T.T;;E #%%c?:.UX]&&< ,*4R .A64 68 (+? NCC*B*648 H686B8*/4 /C 8A6 768074 /7*6486H -7/R7(11*4R 1(+*B*/0) B/H6E

T.T;;E #%&&?:dMK]&%< a((4

d4(7+*/R+0

68 (+? ` C766F H6C6(8*4R 768074 /7*6486H -7/R7(11*4R 8A7/0RA R(HR68 +6))2*4(7*6)? J.;J.E #%&%?

:K_>]&%< >*4D0

K* 68 (+? V6C6(8*4R 768074 /7*6486H 7//8D*8)

O*8A e768074 +6))f

D6746+)? N07/;9)E #%&%?:M>=&&< @9+67 M+68)BA

68 (+? g*8*R(8*4R B/H6 760)6 (88(BD) O*8A B/487/+ C+/O +/BD*4R? J.;J.E #%&&?[LSC+08] Michael E. Locasto

et al. Return value predictability for self-healing. IWSEC 2008.

Page 64: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

38

/GOO.39: ;(8., KQ'RRRRS#F<S#"JS#EIS#K0S#TTS#TTS#TTS#TTS#-$ &"""C$%<2(,,>?M

.;2

!!!&"""C$%< L72

.8*!!!

;+7.!,**

S#F<S#"JS#EIS#K0S#TT

Code Injection

!!!&"""C$%< L72

.-"!!!

;+7.!,**

.(#

&"""C$%<

Page 65: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

39

NX

W^X, PaX, Exec Shield, DEP

x86 support introduced by AMD, followed by IntelPentium 4 (late models)

DEP introduced in XP SP2 (hardware-only)Applications can opt-in (SetProcessDEPPolicy() or /NXCOMPAT)

&"""C$%<S#F<S#"JS#EIS#K0S#TTS#TTS#TTS#TTS#-$

Page 66: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

40

U/>?U;H

Ret2libc ROP

ret2libc [Solar Designer ’97]

V.#.=8.2(,,>?M O(W. 3.4

.;2

(3M$VOG?=% O(W. 3.4(3M$VOG?=$ *:*L *:*L ;.= (3M%

.;2

ret2libc chaining [Nergal

’01]

Page 67: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

41

Ret2libc ROP

Borrowed code chunks technique [Krahmer

’05]

Pass function arguments through registers (IA-64)

"#""""""""""&""(0%1

2+2 X3/#"#""""""""""&""(061

3.4Y

"#""""%(((((=J&6,E1

7+8

X3/#5X;-"

M8N8=.)"#""""%(((((=J&6,01

(,, Z"#."5X3;2"#""""%(((((=J&6,O1

2+2 X3/#"#""""%(((((=J&6."1

3.4Y

"#""""%(((((=E"/O&1

7+8

X3;25X;@>

E#>?E89"#""""%(((((=E"/OJ1

=(**Y

BX.(#

Return-oriented programming [Shacham

’07]

Turing-complete return-oriented “shellcode”Jump-oriented programming [Shacham

’10]

Page 68: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

42

Current State of ROP exploits

First-stage ROP code for bypassing DEPAllocate/set W+X memory ([>34G(*<**+=, [>34G(*'3+4.=4, …)Copy embedded shellcode into the newly allocated areaExecute!

The complexity of ROP exploit code increases…New anti-ROP features in EMETROP exploit mitigations in Windows 8

The embedded shellcode can be concealedROP-based unpacker

[Lu ’11]

Page 69: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

43

Modifiable Gadgets

Page 70: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

44

Impact on Broken Gadgets’

Instructions

Page 71: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

45

Randomization Entropy for Broken Gadgets

Page 72: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+,-.'#*/01,+20*'3405'61+.7-*8'/01'"9:91089*90;<'$)<:9,<'

=0>4'?01@;9:'+*A'$-,B+'$9:B;,+AB+C+*'

D04;,E-+'F*-C91<-:)'G'HIJIKLML'

Page 73: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

N;:4-*9'

•  #*:10A;.20*'– ()*+,-.'#*/01,+20*'3405'61+.7-*8'O(#36P'– "9:91089*90;<'<)<:9,<'

•  Q94+:9A'5017'– 6+8',+*+89,9*:'

•  6B9'!"#$%'+1.B-:9.:;19'•  #,R49,9*:+20*'+*A'O+'/95P'19<;4:<'•  D0*.4;<-0*'

Page 74: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'•  $-*.9'+4,0<:'+'A9.+A9S',+*)'B+1A5+19'+RR10+.B9<'

•  D019'R1-*.-R49'–  6+-*:'A+:+'/10,';*:1;<:9A'<0;1.9<'

•  TU:1+':+8'E-:'R91'E):9I501A'–  ?10R+8+:9':+-*:'A;1-*8'R1081+,'9U9.;20*'

•  NR91+20*'0*':+-*:9A'A+:+'R10A;.9<':+-*:9A'19<;4:'–  DB9.7'<R;1-0;<';<9<'0/':+-*:9A'A+:+'

•  D0A9'9U9.;20*'

•  (9:9.20*'0/'405V49C94';R':0'B-8BV49C94'+W+.7<'O+*A':0'<0,9'9U:9*A'-*/01,+20*'49+7+89P'

Page 75: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'V'TU+,R49'

•  $-,R49'E;X91'0C91Y05'+W+.7'

!"#$%&"'#!("$)'*+,$-%"+./0$1$$$'*+,$2&%345678$$$9:;<$-=,'8$$$$=,'$>$%(?/")%"+./@$A,B08$$$$C*!D/$)%E/#=)2&%@$FG4H@$=,'00$1$$$$$I$$$J$$$$,/#&,"$G8$J$

19:;1*'+AA19<<'

E;/'ZK[J\'

]+4-.-0;<'-*R;:'A+:+'+W+.7'

Page 76: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'G'.0*.9R:;+4'-,R49,9*:+20*'

#V.+.B9'

D?F'

(V.+.B9'

#/9:.B' 6+8'.B9.7'OMP'

(9.0A9' ?04-.)'(9.0A9'

Q3'A+:+'+..9<<' Q3':+8'+..9<<'

TU9.;:9'G'^_F' 6+8'R10R+8+20*'

]9,01)'O19+AI51-:9P' 6+8']9,01)'O19+AI51-:9P'

V' 6+8'.B9.7'OKP'

!`' 6+8'!`' ]9,01)'

Page 77: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

"9:91089*90;<'<)<:9,<'

•  T,E9AA9A'<)<:9,<'– T*918)V9a.-9*.)'.0*.91*<'– (9A-.+:9A'+<),,9:1-.'R10.9<<01<'– ^..9491+:01<'

•  D0,,0A-:)'<)<:9,<'– ?91/01,+*.9'.0*.91*<'– b?b?F'– ^..9491+:01<'O.1)R:0S'9:.cP'

Page 78: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,
Page 79: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'/01'B9:91089*90;<'<)<:9,<'

•  ]+-*4)'R91-RB91+4'A9C-.9<'<0'/+1'– $0;1.9<'01'<-*7<S'E-*+1)'+..9<<'.0*:104'E)'<0d5+19'

•  !B+:'+E0;:'+..9491+:01<e'– ]9,01)':0',9,01)',0A94<'– $B0;4A'E9'-*:981+:9A':0':B9'(#36'-*/1+<:1;.:;19'

Page 80: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Q94+:9A'5017'G'!"#$%&'#$('<.B9,9'(+:+'9U:9*<-0*'5-:B':+8<'

•  ?10<&'–  _05'.0,R49U-:)'–  D0*<-<:9*.)'E)'A9/+;4:'–  T+<)'+..9<<'/01'+..9491+:01<'

•  D0*<&'–  f0*V<:+*A+1A',9,01)'E+*7<S'<R9.-+4'D?F'-*<:1;.20*<'

–  "-8B'+19+'0C91B9+A'O5+<:9/;4'-*',0<:'.+<9<P'

Z]-*0<S'Q+7<B+\'

D?F'

D+.B9<'

]9,01)'

Page 81: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Q94+:9A'5017'G')$*+,-.$('<.B9,9'$9R+1+20*'0/'A+:+'+*A':+8<''•  ?10<&'

–  _05'+19+'0C91B9+A'•  D0*<&'

–  "-8B'.0,R49U-:)'–  D0*<-<:9*.)',;<:'E9'+AA19<<9A'<R9.-g.+44)'

–  (-a.;4:':0'+A+R:'/01'+..9491+:01<'

Z$;BI(#36S'349U-:+-*:S'%+**+*ID0R10S'(9*8I3?b^\'

D?F'

D+.B9<'

]9,01)'

Page 82: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

6B9'!"#$%'+1.B-:9.:;19'

•  "05':0'89:':B9'E9<:'0/'E0:B'<.B9,9<e'– _05'+19+'0C91B9+A'– _05'.0,R49U-:)'

•  ")E1-A'<.B9,9'– h(9.0;R49Ai'<:01+89'– h#*:981+:9Ai'-*:91/+.9<'

Page 83: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'_05'+19+'0C91B9+A ''

•  (9.0;R49A'<.B9,9'– ?+89V:+E49'<:1;.:;19'•  3-1<:'49C94&'R+89'81+*;4+1-:)'•  $9.0*A'49C94&'O0*VA9,+*AP'501A'81+*;4+1-:)'

– ?B)<-.+4'+AA19<<'<R+.9'

6+8'R+89V:+E49'

(+:+'

]9,01)'

Page 84: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'_05'.0,R49U-:)'

•  #*:981+:9A'-*:91/+.9<'– ?10.9<<01<'– ^..9491+:01<'

D?F'

?D'-*<:'

j':+8'

j'A+:+'

j':+8'

:+8' :+8'

^..9491+:01'

j'(-'

j'(0'

6-' 60'

Page 85: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'6+8',+*+89,9*:'OMP'

•  ^:'R4+k01,'49C94' 6+8'R+89V:+E49'

(+:+'

]9,01)'

]9,01)'.0*:104491'

<?6?Q'

$)<:9,'#*:91.0**9.:' <6_`'

•  NR2,-l+20*<e'

Page 86: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'6+8',+*+89,9*:'OKP'

•  ?10.9<<01<'D?F'

-*<:' A+:+'

#V.+.B9' (V.+.B9'

•  <6_`<'–  TUR40-:'R+89'81+*;4+1-:)'–  "+*A49'R+89'19g*9,9*:' #V<6_`' (V<6_`'

<?6?Q'

Page 87: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'6+8',+*+89,9*:'OKP'

•  ?10.9<<01<'D?F'

-*<:' A+:+'

#V.+.B9' (V.+.B9'

•  <6_`<'–  TUR40-:'R+89'81+*;4+1-:)'–  "+*A49'R+89'19g*9,9*:' #V<6_`' (V<6_`'

•  $9R+1+:9':+8'.+.B9<'–  _0591'+19+'

•  D0,,;*-.+20*'R10:0.04'–  fNfTS'!#6"S'Nf_m'

<?6?Q'

Page 88: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'6+8',+*+89,9*:'OnP'

•  ^..9491+:01<'

•  <6_`'

•  $91-+4-l91I(9<91-+4-l91'

•  ?+89'19g*9,9*:'

^..9491+:01'

!1+RR91'

<6_`'o'<?6?Q' #f6'

Page 89: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%'G'6+8',+*+89,9*:'OpP'

•  <6_`<'– <6_`VR'– <6_`V5'

•  $0d5+19'<;RR01:'– ?+89':+E49'– ?6?Q<'– ?+89'19g*9,9*:'– 6+8'R04-.-9<'

D?F'

]9,01)'

]9,01)'D0*:104491'

.+.B9<'

6V.+.B9<'

<6_`<VR'<6_`V5'

^..9491+:01'

<6_`VR'

Page 90: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

#,R49,9*:+20*'•  "+1A5+19'

–  `+<9A'0*'$0D_-E'<-,;4+20*'/1+,95017'– ]#?$'R10.9<<01'O<-*849V-<<;9'R-R94-*9P'– !1-:9VE+.7'.+.B9<'–  (-19.:01)VE+<9A'.0B919*.9'R10:0.04'–  f0'C-1:;+4',9,01)'–  D10<<E+1'-*:91.0**9.:'

–  $)<:9,D'G'`D^'

•  $0d5+19'– ];:97"&'A9A-.+:9A'791*94'/01'9,E9AA9A'<)<:9,<'

Page 91: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'/;44'<)<:9,'

D?F'

]9,01)'

]9,01)'D0*:104491'

.+.B9<'

6V.+.B9<'

<6_`<VR' <?6?Q'

_q$$'

<6_`VR'

<6_`V5'

<?6?Q'

^T$'

<6_`VR' <?6?Q'

(]^'

<6_`VR' <?6?Q'

<?6?Q'

%91*94' 4-E<:+8'

+RR4-.+20*'

<)<:9,'-*:91.0**9.:'

#DF'

Page 92: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

TC+4;+20*<'•  $9:'0/'<0d5+19'E9*.B,+17<'

– ];42,9A-+V01-9*:9AS'A+:+V-*:9*<-C9'–  .rR98S',-*-,+AS'UC-As9*.S'UC-AsA9.'

•  $9:'0/'B+1A5+19',-.10VE9*.B,+17<'–  #*R;:'E;X91'OK[J'R+89<P'Vt'+..9491+:01'Vt'0;:R;:'E;X91'

•  `+<94-*9'R91/01,+*.9'40<<'–  (#36'-*/1+<:1;.:;19'-<'+.2C9'E;:';*;<9A'

•  ?1-.9'0/'<9.;1-:)'C<c'hA98199i'0/'<9.;1-:)'

Page 93: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

`+<94-*9'G'<0d5+19'+RR4-.+20*<'

Page 94: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

`+<94-*9'G'+..9491+:01<'

Page 95: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'G'<0d5+19'+RR4-.+20*<'

Page 96: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

(#36'G'+..9491+:01<'

Page 97: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

D0*.4;<-0*'•  (#36'+<'+'B+1A5+19'<9.;1-:)'R1-,-2C9'

–  3;44V<)<:9,'(#36'–  $9+,49<<'-*:981+20*'0/'0;1'(#36'R4+k01,'E+.7E0*9'5-:B'R+<:'19<9+1.B'

•  f984-8-E49'R91/01,+*.9'40<<'5B9*'*0:';24-l-*8':+88-*8'•  OTUR9.:9AP'4-*9+1'.01194+20*'E9:599*':B9'R1-.9'0/':B9'<9.;1-:)'+*A':B9'

+,0;*:'0/':+88-*8'

•  $B01:V:91,'/;:;19'5017&'–  `;8<'gU-*8'–  3-*-<B'<-,;4+20*<'–  ];42VR10.9<<01'<)<:9,'

•  _0*8V:91,'/;:;19'5017&'–  TU:91*+44)',+*+89A'(#36'<)<:9,'

Page 98: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Embedded System Exploitation and Defense CRASH Site Visit

September 6, 2012

Ang Cui Columbia IDS Lab

[email protected]

Salvatore J. Stolfo Columbia IDS Lab

[email protected]

Page 99: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Autotomic Binary Structure Randomization (ABSR)

Lessons Learned From HP RFU Vulnerability •  Legit Features can be serious vulnerabilities •  Legit Features can’t always be disabled

So!

•  “disable” all unused “features” to reduce attack surface •  Turn unused code into dead-code

•  Dead-code can be used for defense •  Binary randomization, re-structuring •  ROP/Return-to-Lib detection

Page 100: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Autotomic Binary Structure Randomization (ABSR)

So!

•  “disable” all unused “features” to reduce attack surface •  AUTOTOMIC

•  Dead-code can be used for defense •  BINARY STRUCTURE RANDOMIZATION

Page 101: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Post-ABSR Symbiote Organization

!Symbiotes in Self-Monitoring-Monitors Configuration!

!

Page 102: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Autotomic Binary Structure Randomization (ABSR) STATUS

!Initial Proof of Concept implementation

Page 103: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Autotomic Binary Structure Randomization

(ABSR) STATUS

!Presentation to Symantec, HP Several Provisional patent filing Michael Costello hired as FTE Paper under review BlackHat/Defcon presentations Red Balloon Security Inc. founded www.redballoonsecurity.com

Page 104: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#"$#%&"'(")*+,-.(/,.,01+-+23*(4563.70,89+-:(

.70;5:7(<*7,956,(#,68=83;-

>,1+-:(?5+!"#$%&'()"*(!"

#+,%"-.//.&,)0!"1(.'.%&"-(+!"#(%2)%&"3.%&"

"4+56.0)"4'78)97":.;"<+/(9;$."=%$>)07$8'

Page 105: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

?+%@)8)09$%$79"$%"A(/B8,0).@$%&

•  C$D)0)%8"0(%7"!"@$D)0)%8";),.>$+07!"@)E)%@$%&"+%"8,0).@"7F,)@(/)7"

•  <.(7)"/+87"+2"E0+;/)97"– C.8."0.F)"– 4)F(0$8'")GE/+$8"H1+8I.0"JKLM"– N"

Page 106: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Thread 0 Thread 1

Apache Bug #21287

Thread 0 Thread 1

mutex_lock(M) *obj = … mutex_unlock(M)

mutex_lock(M) free(obj) mutex_unlock(M)

mutex_lock(M) *obj = … mutex_unlock(M) mutex_lock(M)

free(obj) mutex_unlock(M)

?+%@)8)09$%$7BF"4'%F,0+%$O.B+%

Thread 0 Thread 1

FFT in SPLASH2

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

Thread 0 Thread 1

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

C.8."P.F)

Page 107: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

C)8)09$%$7BF"A(/B8,0).@$%&"QCARS

•  4.9)"$%E(8"""7.9)"7F,)@(/)"– T@@0)77)7"9.%'"E0+;/)97"@()"8+"%+%@)8)09$%$79""

•  UG$7B%&"CAR"7'78)97")%2+0F)")$8,)0"+2"– !"#$%&$'()*+(V"@)8)09$%$7BF"8+8./"+0@)0"+2"7'%F,"+E)0.B+%7"Q)W&W!"/+FXQSY(%/+FXQSS"

– ,(-%&$'()*+(V"@)8)09$%$7BF"+0@)0"+2"7,.0)@"9)9+0'".FF)77)7"Q)W&W!"/+.@Y78+0)S"

Page 108: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Thread 0 Thread 1

FFT in SPLASH2

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

Thread 0 Thread 1

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

4'%FZ7F,)@(/)

•  HRUP?"[4C\"JK]M!"H^)%@+"T4I:[4"J]_M!")8F"•  I0+7V")`F$)%8"QKab"+>)0,).@"$%"^)%@+S"•  <+%7V"@)8)09$%$7BF"+%/'"6,)%"%+"0.F)7"– A.%'"E0+&0.97"F+%8.$%"0.F)7"H:("T4I:[4"J]cM"

Thread 0 Thread 1

Apache Bug #21287

Thread 0 Thread 1

mutex_lock(M) *obj = … mutex_unlock(M)

mutex_lock(M) free(obj) mutex_unlock(M)

mutex_lock(M) *obj = … mutex_unlock(M) mutex_lock(M)

free(obj) mutex_unlock(M)

Page 109: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

A)9Z7F,)@(/)

•  H<[PUCUR"T4I:[4"JK]M!"H@[4"[4C\"JK]M!")8F"•  I0+7V"@)8)09$%$7BF"@)7E$8)"+2"@.8."0.F)7"•  <+%7V",$&,"+>)0,).@"Q)W&W!"KWLdK]WKe"7/+6@+6%"$%"@[4S"

Thread 0 Thread 1

FFT in SPLASH2

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

Thread 0 Thread 1

…… barrier_wait(B) print(result)

…… barrier_wait(B) result += …

Page 110: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

[E)%"<,.//)%&)"H*[CUR"JKKM

•  U$8,)0"@)8)09$%$79"+0")`F$)%F'!";(8"%+8";+8,"

@AB,(;C(<*7,956, /,.,01+-+21 ")*+,-*A

4'%F # $A)9 $ #

<.%"6)"&)8";+8,f"

Page 111: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

3)7!"6)"F.%g

@AB,(;C(<*7,956, /,.,01+-+21 ")*+,-*A

4'%F # $A)9 $ #

IUPU-P\?U $ $

Page 112: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

IUPU-P\?U"\%7$&,8

•  ./$(&01/1(+"02$$*10–  \%8($B>)/'!"9.%'"0.F)7"!"./0).@'"@)8)F8)@"– U9E$0$F.//'!"7$G"0)./".EE7"!"(E"8+"K]"0.F)7"+FF(0)@"

•  3"415)0&$'()*+(0– 4'%FZ7F,)@(/)"$%"0.F)Z20))"E+0B+%"Q9.h+0S"– A)9Z7F,)@(/)"$%"0.F'"E+0B+%"Q9$%+0S"

Page 113: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

IUPU-P\?UV"U`F$)%8"CAR

•  !$'()*+(0.(+/6/72#0–  P)F+0@")G)F(B+%"80.F)"2+0"%)6"$%E(8"–  P)/.G"80.F)"$%8+"'"415)0&$'()*+("–  P)(7)"+%"9.%'"$%E(87V"@)8)09$%$7BF"i")`F$)%8"

•  P)(7)"0.8)"$7",$&,"Q)W&W!"_]Wjb"2+0"TE.F,)!"HRUP?"[4C\"JK]MS"•  T(8+9.BF"(7$%&"%)6"E0+&0.9".%./'7$7"8)F,%$k()7"

•  P(%"$%":$%(G!"(7)0"7E.F)"•  1.%@/)"I8,0).@"7'%F,0+%$O.B+%"+E)0.B+%7"•  *+0X"6$8,"7)0>)0"E0+&0.97"HRUP?"[4C\"JK]M"

Page 114: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

4(99.0'"+2"P)7(/87•  U>./(.8)@"+%"."@$>)07)"7)8"+2"Kc"E0+&0.97"

–  l"0)./".EE/$F.B+%7V"TE.F,)!"Imn$EL!".&)8!"E27F.%"–  Kj"7F$)%BoF"E0+&0.97"QK]"20+9"4I:T41L!"j"20+9"ITP4U<S"–  P.F)'"QE+E(/.0"780)77"8)7B%&"8++/"2+0"CARS"

•  C)8)09$%$7BF.//'"0)7+/>)".//"0.F)7"

•  U`F$)%8V"plb"2.78)0"8+"l_b"7/+6)0"

•  48.;/)V"20)k()%8/'"0)(7)"7F,)@(/)7"2+0"_"E0+&0.97"– A.%'";)%)o87V")W&W!"0)(7)"&++@"7F,)@(/)7"HRUP?"[4C\"JK]M"

Page 115: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

[(8/$%)

•  !"#"$#%&"(;D,0D+,E(•  T%")G.9E/)"•  U>./(.B+%"•  <+%F/(7$+%"•  q(8(0)"6+0X"

Page 116: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

IUPU-P\?U"[>)0>$)6

%-2.051,-.;0(

FFG4(

#,*;09,0(

H<(

!0;:081(

<*7,956,(?8*7,

89:;<

I?+J(<+K

!0;:081(<;50*,(

4+22 >+.

I?J<K"=,*53;-(@08*,2

I?LJ(<LK(M(

I?-J(<-K

89:;<J(<+89:;<

#,B68A,0(

H<(

!0;:081(

N-86AO,0(

48.*7P

Page 117: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

[(8/$%)

•  IUPU-P\?U"+>)0>$)6"•  N-(,=81B6,(

•  U>./(.B+%"•  <+%F/(7$+%"•  q(8(0)"6+0X"

Page 118: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%"UG.9E/)!"#$%"&'()*(+"&*,"&'-./0*1***$2+&3"4*5*"26#%"&'-.7/08***9#:3*5*"26#%"&'-.;/08***<6&%#578*#=$2+&3"48*>>#0*****?2+&3"4@(&3"23%A6&B3&08***A6&B3&%08******#<*%%<C"'5"26#%"&'-.D/005570*****&39EC2*>5*F8***?&#$2<%GH4I$J)*&39EC208*K*A6&B3&%0*1***(+"&*,4"2"8***4"2"*5*!"CC6(%9#:3L$2+&3"408***<6&%#5M8*#=9#:3L$2+&3"48*>>#0*****4"2".#/*5*!NO3"4%#08****?2+&3"4@!E23P@C6(B%Q!E23P08***&39EC2*>5*F8***?2+&3"4@!E23P@E$C6(B%Q!E23P08*K*

LL*O3"4*#$?E2R*

LL*S&3"23*(+#C4&3$*2+&3"49R*

LL*O3"4*<&6!*G&39EC2JR*

LL*T&#23*26*G&39EC2JR*

LL*UCC6("23*4"2"*A#2+*G9#:3L$2+&3"4JR*

LL*O3"4*4"2"*<&6!*4#9B*"$4*(6!?E23R*LL*V&"W*!E23PR*

LL*T6&BR*LL*X#99#$'*?2+&3"4@Y6#$%0*

LL*#<*G<C"'J*#9*7)*E?4"23*G&39EC2JR*

Page 119: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

\%780(9)%8+0!"#$%"&'()*(+"&*,"&'-./0*1*!!"#$%&'(!)!'#*+,'%-./0123!!!4+5&!)!'#*+,'%-./6123!**<6&%#578*#=$2+&3"48*>>#0*****?2+&3"4@(&3"23%A6&B3&08***A6&B3&%08***LL*X#99#$'*?2+&3"4@Y6#$%0***#<*%%<C"'5"26#%"&'-.D/005570*****&39EC2*>5*F8***?&#$2<%GH4I$J)*&39EC208*K*A6&B3&%0*1***(+"&*,4"2"8***4"2"*5*!"CC6(%9#:3L$2+&3"408***<6&%#5M8*#=9#:3L$2+&3"48*>>#0*!!!!('#'/+1!)!789&'(,+23!!**?2+&3"4@!E23P@C6(B%Q!E23P08***&39EC2*>5*F8***?2+&3"4@!E23P@E$C6(B%Q!E23P08*K*

LL*Z$92&E!3$2*(6!!"$4*C#$3*"&'E!3$29R*

LL*Z$92&E!3$2*&3"4%0*<E$(2#6$*A#2+#$*!NO3"4%0R*

Page 120: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

\%780(9)%8+0!"#$%"&'()*(+"&*,"&'-./0*1***"#$%&'(!)!'#*+,'%-./0123!!!4+5&!)!'#*+,'%-./6123!**<6&%#578*#=$2+&3"48*>>#0*!!!!:#$%&'(;<%&'#&,=*%>&%23!**A6&B3&%08***LL*X#99#$'*?2+&3"4@Y6#$%0***#<*%%<C"'5"26#%"&'-.D/005570*****&39EC2*>5*F8***?&#$2<%GH4I$J)*&39EC208*K*A6&B3&%0*1***(+"&*,4"2"8***4"2"*5*!"CC6(%9#:3L$2+&3"408***<6&%#5M8*#=9#:3L$2+&3"48*>>#0*!!!!('#'/+1!)!789&'(,+23!!!!:#$%&'(;7?#&@;A*<>,B7?#&@23!**&39EC2*>5*F8*!!:#$%&'(;7?#&@;?"A*<>,B7?#&@23!K*

LL*Z$92&E!3$2*(6!!"$4*C#$3*"&'E!3$29R*

LL*Z$92&E!3$2*&3"4%0*<E$(2#6$R*

LL*Z$92&E!3$2*9N$(+&6$#:"2#6$*6?3&"2#6$R*

LL*Z$92&E!3$2*9N$(+&6$#:"2#6$*6?3&"2#6$R*

LL*Z$92&E!3$2*9N$(+&6$#:"2#6$*6?3&"2#6$R*

Page 121: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

""""""rWY.W+(8""L""L""]""""""""""""""""""""P)F+0@)0!"#$%"&'()*(+"&*,"&'-./0*1***$2+&3"4*5*"26#%"&'-.7/08***9#:3*5*"26#%"&'-.;/08***<6&%#578*#=$2+&3"48*>>#0*****?2+&3"4@(&3"23%A6&B3&08***A6&B3&%08***LL*X#99#$'*?2+&3"4@Y6#$%0***#<*%%<C"'5"26#%"&'-.D/005570*****&39EC2*>5*F8***?&#$2<%GH4I$J)*&39EC208*K*A6&B3&%0*1***(+"&*,4"2"8***4"2"*5*!"CC6(%9#:3L$2+&3"408***<6&%#5M8*#=9#:3L$2+&3"48*>>#0*****4"2".#/*5*!NO3"4%#08****?2+&3"4@!E23P@C6(B%Q!E23P08***&39EC2*>5*F8***?2+&3"4@!E23P@E$C6(B%Q!E23P08*K*

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

**?&#$2<%F)&39EC20*

Page 122: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

""""""rWY.W+(8""L""L""]""""""""""""""""""""P)F+0@)0

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

**?&#$2<%F)&39EC20*

Page 123: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%./'O)0V"1';0$@"4F,)@(/)

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

!!:#$%&'(;<%&'#&,2!

!!!!A*<>,2!

!!!!?"A*<>,2!!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

**?&#$2<%F)&39EC20*

Page 124: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%./'O)0V"1';0$@"4F,)@(/)

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

!!:#$%&'(;<%&'#&,2!

!!!!A*<>,2!

!!!!?"A*<>,2!!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

!!!

!!!!%&4?A#C)D3!

!!!!%&4?A#C)D3!

!!:%+"#E,DF%&4?A#2!

Page 125: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

**?&#$2<%F)&39EC20*

T%./'O)0V"1';0$@"4F,)@(/)

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

!!:#$%&'(;<%&'#&,2!

!!!!A*<>,2!

!!!!?"A*<>,2!!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

!!:%+"#E,DF%&4?A#2!

!!!!%&4?A#C)D3!

Page 126: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%./'O)0V"1';0$@"4F,)@(/)

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

!!:#$%&'(;<%&'#&,2!

!!!!A*<>,2!

!!!!?"A*<>,2!!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

!!:%+"#E,DF%&4?A#2!

!!!!%&4?A#C)D3!

**?&#$2<%F)&39EC20*

Page 127: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

"""""""""""""""""""""""""""""""""T%./'O)0V"I0)F+%@$B+%

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

**?&#$2<%F)&39EC20*

""<,.//)%&)7"–  U%7(0)"7F,)@(/)"$7"2).7$;/)"–  U%7(0)"%+"%)6"0.F)7"

!!:#$%&'(;<%&'#&,2!!!!!A*<>,2!!!!!?"A*<>,2!

!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

!!:%+"#E,DF%&4?A#2!

!!!!%&4?A#C)D3!

WY.W+(8""L""L""]

1';0$@"4F,)@(/)

!"#$%"&'()*(+"&*,"&'-./0*1***$2+&3"4*5*"26#%"&'-.7/08***9#:3*5*"26#%"&'-.;/08***<6&%#578*#=$2+&3"48*>>#0*****?2+&3"4@(&3"23%A6&B3&08***A6&B3&%08***LL*X#99#$'*?2+&3"4@Y6#$%0***#<*%%<C"'5"26#%"&'-.D/005570*****&39EC2*>5*F8***?&#$2<%GH4I$J)*&39EC208*K*FF*

Page 128: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

?.s>)"TEE0+.F,"8+"<+9E(B%&"I0)F+%@$B+%7

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

**%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

"#$%&'())6!

4+5&))6!

!!,0G"#$%&'(2))0!

!!,6G"#$%&'(2))H!

!!!!,HG4+5&I"#$%&'(2))0!

!!!!,0G4+5&I"#$%&'(2))H!

!!!!,HG4+5&I"#$%&'(2))0!

!!!!,0G4+5&I"#$%&'(2))H!

**?&#$2<%F)&39EC20*!!,EA'-))02))H!

EA'-J)0!

Page 129: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%./'O)0V"I0)F+%@$B+%7"Q."?.s>)"*.'S

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0*!!,0G"#$%&'(2))0!**?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*!!!!,HG4+5&I"#$%&'(2))0!****4"2".#/5!NO3"4%0*!!!!,0G4+5&I"#$%&'(2))H!

**,EA'-))02))H!

!!,6G"#$%&'(2))H!

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*!!!!,HG4+5&I"#$%&'(2))0!****4"2".#/5!NO3"4%0*!!!!,0G4+5&I"#$%&'(2))H!

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0* •  I0+;/)9V"+>)0ZF+%780.$%$%&g"–  &5=("9(78";)"L"8+"0)(7)"

•  T;7+0;)@"9+78"+2"+(0";0.$%"E+6)0"$%"8,$7"E.E)0g"

•  4+/(B+%V"86+"%)6"E0+&0.9".%./'7$7"8)F,%$k()7t"7))"E.E)0"

"#$%&'())6!

4+5&))6!

EA'-J)0!

**?&#$2<%F)&39EC20*

Page 130: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

T%./'O)0V"I0)F+%@$B+%7

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

!!%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

"#$%&'())6!

!!,0G"#$%&'(2))0!

!!,6G"#$%&'(2))H!

!!,EA'-))02))H!

EA'-J)0!

**?&#$2<%F)&39EC20*

Page 131: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

WY.W+(8""L""K]]]""j"""""""""""""P)E/.')0

"#$%&'())6!

EA'-J)0!

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557***?2+&3"4@(&3"23%0*

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

!!%<C"'557055M*

**%;=$2+&3"4055M*

[+&3"4*M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

****C6(B%0*****&39EC2>5F8*****E$C6(B%0*

!"#$%0*

**A6&B3&%0*

!!:#$%&'(;<%&'#&,2!!!!!A*<>,2!!!!!?"A*<>,2!

!!!!A*<>,2!

!!!!?"A*<>,2!

[+&3"4*7*[+&3"4*M*

!!:%+"#E,DF%&4?A#2!

!!!!%&4?A#C)D3!

1';0$@"4F,)@(/)

**?&#$2<%F)&39EC20*

I0)F+%@$B+%7

Page 132: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

m)%)o87"+2"IUPU-P\?U

[+&3"4*7*

**$2+&3"45"26#%0***9#:35"26#%0***%7=$2+&3"40557*!!:#$%&'(;<%&'#&,2!

**A6&B3&%0*****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

!!,EA'-))02))H!

**%;=$2+&3"4055M*

[+&3"4*M*

!!!!A*<>,2!****&39EC2>5F8*!!!!?"A*<>,2!

****4"2"5!"CC6(%0*****%M=9#:3L$2+&3"40557*****4"2".#/5!NO3"4%0*****%7=9#:3L$2+&3"4055M*

!!!!A*<>,2!!!!!%&4?A#C)D3!!!!!?"A*<>,2!

!"#$%0*

**A6&B3&%0*

!!,0G"#$%&'(2))0!

!!,6G"#$%&'(2))H!

•  K&#&%7+"+4#+<L!&396C-3*&"(3*6$*!"#$%&8*$6*$3A*4"2"*&"(39'

•  MEE+<+&"#\*C66?9*6$*()&)*+'&E$*#$*?"&"CC3C*

•  N#'OA&*.[]O^*_`aZ*b7M/\*("$*&3E93*6$*"$N*4"2"*9#:3*6&*(6$23$29*

•  _2+3&*"??C#("2#6$9*?699#WC38*2"CB*26*E9c*

!!:%+"#E,DF%&4?A#2!

Page 133: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

[(8/$%)

•  IUPU-P\?U"+>)0>$)6"•  T%")G.9E/)"•  "D86583;-(•  <+%F/(7$+%"•  q(8(0)"6+0X"

Page 134: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

-)%)0./"UGE)0$9)%8"4)8(E•  I0+&0.9Z6+0X/+.@"

–  NB8*7,V"@+6%/+.@"."K]]^m",89/"E.&)"(7$%&"TE.F,)m)%F,"–  !QR+BSV"F+9E0)77"."K]Am"o/)"–  N:,.V"@+6%/+.@"/$%(GZjW]WKW8.0W;OL!"uuAmW"–  !C2*8-V"7F.%"X)'6+0@"v0)8(0%w"K]]"o/)7"20+9"&FF"E0+h)F8"–  LT(2*+,-3U*(V,-*7180W2"QK]"20+9"4I:T41L!"j"20+9"ITP4U<SV"0(%"2+0"KZK]]"97"

–  #8*,AV"@)2.(/8"6+0X/+.@"

•  A.F,$%)V"LWau-1O"@(./Z7+FX)8"k(.@ZF+0)"\%8)/"e)+%"9.F,$%)"Q)$&,8"F+0)7S"6$8,"Ll-m"9)9+0'"

•  <+%F(00)%F'V")$&,8"8,0).@7"2+0".//")GE)0$9)%87"

Page 135: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

C)8)09$%$79

!0;:081 X(#8*,2 <A-*Y2*7,956,

>AV0+9(2*7,956,

NB8*7, Z $ $

!QR+BS [ # $

V80-,2 \ # $

] LZ # $

65Y-;-Y*;-3: LZ # $

2.0,81*652.,0 Z $ $

08*,A L^_`_[ # $

Page 136: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

[>)0,).@"$%"P)(7$%&"4F,)@(/)7

Page 137: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

b"+2"\%780(FB+%7":)5"$%"8,)"R0.F)

Page 138: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

<+%F/(7$+%

•  1';0$@"7F,)@(/)V"F+9;$%)"8,)";)78"+2";+8,"7'%FZ7F,)@(/)".%@"9)9Z7F,)@(/)7"

•  IUPU-P\?U"– 4F,)@(/)"0)/.G.B+%"8+"F+9E(8)",';0$@"7F,)@(/)7"– C)8)09$%$7BF"Q9.X)".//"u"0.F'"E0+&0.97"@)8)09$%$7BFS"

– U`F$)%8"Qplb"2.78)0"8+"l_b"7/+6)0S"– 48.;/)"Q20)k()%8/'"0)(7)"7F,)@(/)"2+0"_"+(8"+2"KuS"

Page 139: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

q(8(0)"*+0X

•  <,)FX"F0$BF./"7'78)9"0(/)7"–  "C)8)F8)@"KKj"7'78)9"0(/)">$+/.B+%7"20+9"6$@)/'"(7)@":$%(G"(B/$B)7"

– K]"7)0$+(7"@.8."/+77")00+07"$%"6$@)/'"(7)@"(B/$B)7"6$8,"L"F+%o09)@";'"@)>)/+E)07"

•  4E))@(E"@$780$;(B+%"7'78)97"9+@)/"F,)FX$%&"

•  4(EE+08"[E)%AI"

Page 140: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

P)/.8)@"*+0X"

•  C)8)09$%$7BF"UG)F(B+%"–  H-0.F)"[[I4:T"J]_M!"H^)%@+"T4I:[4"J]_M!"HCAI"T4I:[4"J]_M!"H<[PUCUR"

T4I:[4"JK]M!"H@[4"[4C\"JK]M!"HC)8)09$%.8+0"[4C\"JK]M!"H@8,0).@7"4[4I"JKKM"

•  C)8)09$%$7BF"P)E/.'"–  HP)x$08"[4C\"J]LM"!"H4AIZP)x$08"xUU"J]cM!"H<.E+"T4I:[4"J]_M!"HIPU4"4[4I"

J]_M!"H[CP"4[4I"J]_M!"H4F0$;)"4\-AURP\<4"JK]M"

•  <+%F(00)%F'"U00+07"–  HU0.7)0"R[<4"J_uM!"HP.F)G"4[4I"J]jM!"HP.F)R0.FX"4[4I"J]pM!"HT>$+"T4I:[4"

J]aM!"H:(")/"T4I:[4"J]cM!"H<R0$&&)0"T4I:[4"J]_M"

•  4'9;+/$F"UG)F(B+%"–  H<=RU"q4UZKjM!"HUeU"<<4"J]aM!"H3.%&")/"4I"J]aM!"Hm+(%F)0"4[4I"J]uM!"H^:UU"

[4C\"J]cM!"H<.780+")/"T4I:[4"J]cM"

Page 141: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

R,.%X"'+(g"y()7B+%7f

Page 142: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Liberty Architecture

Jordan Fix Soumyadeep Ghosh

Advisor: David I. August

!"#$%&'($)*$#+&",#'-)

Page 143: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

•  !"#$%&'"()*+%&(,-%&%+"./%0&1"02&%3%(4#,+&&

•  5*()%6&%376%00*,+&,1&2)%&76,86"'&'%"+0&%"0*%6&"+-&.%9%6&"+"/:0*0&1,6&0%(46*2:;&,7#'*<"#,+;&7"6"//%/*<"#,+;&%2(=&

>)%&?*.%62:&@6()*2%(246%&(,'.*+%0&2)%&.%02&,1&.,2)&

!"#$%&'(#)*+,-* .%"/0#)*1#23%(4*5'$4*

A3%(4#,+&>:7%& !"#$%& B+2%676%2%-&

A3%(4#,+&C7%%-& D"02& C/,E&

@+"/:<".*/*2:& ?,E& F*8)&

G7#'*<".*/*2:& ?,E& F*8)&

C"1%2:& H+0"1%& C"1%&

I&

Page 144: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

JG@?K&5%2)*+L&"6()*2%(246%&-%0*8+&2,&"()*%$%&0%(46*2:;&/,+8%$*2:;&7%61,6'"+(%&40*+8&2)%&'*+*'"/&0%2&,1&1%"246%0&

C%(46*2:&–  M,+26,/&N,E&"+-&-"2"&*+2%86*2:&O2)*0&2"/LP&

?,+8%$*2:&&–  5%02,6%0&2)%&".026"(#,+&.6,L%+&.:&Q4/#(,6%&"+-&JRH0&–  C:02%'&*0&76,$*-%-&"//&40%14/&76,86"'&*+1,6'"#,+&–  R6,86"'&*+1,6'"#,+&("+&.%&40%-&*+&+%E&"6()*2%(246%&7"6"-*8'0&O*=%=&6%(,+S846"./%P&

R%61,6'"+(%&&–  T:+"'*(&,7#'*<"#,+&–  C'"62&6%07,+0%&2,&-:+"'*("//:&()"+8*+8&40%6&6%U4*6%'%+20V&"+-&2,&*+742&0%2&$"6*"#,+&

W&

V@64+&5"'"+;&@:"/&X"L0;&Y"%&Z=&?%%;&T"$*-&B=&@48402=&R"6("%K&"&0:02%'&1,6&N%3*./%&7"6"//%/&%3%(4#,+=&R?TB&[\I=&

Page 145: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

•  A37/*(*2&M,+26,/&D/,E&

•  A37/*(*2&T"2"&T%7%+-%+(%0&

]&

Page 146: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

6789+5+!*5:;!<:9*=9:>*

^&

Page 147: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

void Callee(){. . .char str[26];gets(str);. . .return;

}

Ret: . . . . . .

Caller: . . . call Callee

str[0]

str[1]

. . .

str[24]

str[25]

return address = Cont

. . .

Top of Stack

= ‘a’&

= ‘b’&

= ‘y’&

= ‘z’&

malicious&

malicious .&mal:. . .

. . .

Callee: . . . return

_&

Page 148: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

Caller: . . . cblk Callee

. . . . . .

Callee: . . . . . .

str[0]

str[1]

. . .

str[24]

str[25]

. . .

Top of Stack

= ‘a’&

= ‘b’&

= ‘y’&

= ‘z’&

malicious .&mal:. . .

. . .

`&

void Callee(){. . .char str[26];gets(str);. . .return;

}

Page 149: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

M,+026"*+0&M,+26,/&D/,E&2,&MDJ&

R6,2%(20&T"2"&B+2%86*2:&

C%7"6"2%&R6,2%(2%-&5%246+&C2"(L&

!,&C,aE"6%&54+#'%&G$%6)%"-&

M,-%&G68"+*<%-&B+2,&R"6"//%/*<"./%&b/,(L0&

?*.%62:& c%0& c%0& c%0& c%0& c%0&

Q,+-6*3&d\e& !,& c%0& c%0& !,& !,&

MDB&dIe& c%0& !,& !,& !,& !,&

CDB&dWe& c%0& c%0& !,& !,& !,&

fDB&d]e& c%0& c%0& c%0& !,& !,&

fDBgFZ&d^e& c%0& c%0& c%0& c%0& !,&

Q*+,0&d_e& c%0& c%0& !,& c%0& !,&

>5BRC&d`e& !,& !,& !,& c%0& c%0&

\=  A''%9&Z*2()%/;&%2&"/=&Q,+-6*3K&'%',6:&*0,/"#,+&1,6&/*+43&40*+8&',+-6*""+&'%',6:&76,2%(#,+=&CGCR&hi^=&I=  Q"6#+&@."-*;&%2&"/=&M,+26,/gN,E&*+2%86*2:=&MMC&hi^=&W=  Q*)"*&b4-*4;&%2&"/=&@6()*2%(246"/&0477,62&1,6&0,aE"6%g."0%-&76,2%(#,+=&@CBT&hi_=&]=  j/1"6&A6/*+800,+;&%2&"/=&&fDBK&0,aE"6%&84"6-0&1,6&0:02%'&"--6%00&07"(%0=&GCTB&hi_=&^=  T"$*-&C%)6;&%2&"/=&@-"7#+8&0,aE"6%&1"4/2&*0,/"#,+&2,&(,+2%'7,6"6:&MRH&"6()*2%(246%0=&B+&R6,(%%-*+80&,1&2)%&\k2)&HCA!Bf&

(,+1%6%+(%&,+&C%(46*2:=&HCA!Bf&C%(46*2:h\i=&_=  Y%-*-*")&5=&M6"+-"//;&%2&"/=&Q*+,0K&M,+26,/&T"2"&@9"(L&R6%$%+#,+&G62),8,+"/&2,&Q%',6:&Q,-%/=&QBM5G&hi]=&`=  @"6,+&C'*2);&%2&"/=&M,'7*/*+8&1,6&ATJA&@6()*2%(246%0=&MJG&hi_=&

l&

Page 150: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

;:;?5:;!<:9*@-!-*-!!-5A,*-;@*><+!6*+;!6B<+!C*

k&

Page 151: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

7"00E,6-dke&

7"00E,6-die&

F*8)&"--6%00&

7"00E,6-&

"42),6*<%&

?,E&"--6%00&

i&i&i&i&

int authenticate (char[] pwd) {!!int authorize = 0;!!char password[10];!!…!!strcpy(password, pwd);!!…!!if(authorize) !! !return 1;!!return 0;!

}!

\i&

Page 152: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

026(7:O7"00E,6-;&m/,+87"00E,6-nP&

F*8)&"--6%00&

7"00E,6-&

"42),6*<%&

?,E&"--6%00&

int authenticate (char[] pwd) {!!int authorize = 0;!!char password[10];!!…!!strcpy(password, pwd);!!…!!if(authorize) !! !return 1;!!return 0;!

}!i&7"00E,6-dke&

7"00E,6-die&

i&i&i&

6&,&E&0&0&"&7&8&+&,&/&

-&

\\&

Page 153: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

F*8)&"--6%00&

7"00E,6-&

"42),6*<%&

?,E&"--6%00&

int authenticate (char[] pwd) {!!int authorize = 0;!!char password[10];!!…!!strcpy(password, pwd);!!…!!if(authorize) !! !return 1;!!return 0;!

}!i&i&i&i&

6&,&E&0&0&"&7&8&+&,&/&

-&

\I&

Page 154: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

M&C2"+-"6-&

>)%&M&02"+-"6-&07%(*S%0&2)"2&2)%&1,//,E*+8&.%)"$*,60&"6%&4+-%S+%-K&•  R,*+2%6&"6*2)'%#(&',6%&2)"+&,+%&.:2%&.%:,+-&"//,("#,+&4+*2&.,4+-0&

•  @((%00*+8&.%:,+-&.,4+-0&,1&"//,("#,+&4+*20&•  R,*+2%60&.%1,6%&S602&.:2%&,1&"//,("#,+&4+*2&•  T%6%1%6%+(*+8&4+-%S+%-&7,*+2%6&$"/4%0&&•  @((%00*+8&2)%&$"/4%&,1&"+&4+*+*#"/*<%-&$"6*"./%&

\W&

V&*+(/4-%0&"//&M&02"+-"6-0&0*+(%&Mlk&

Page 155: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

\]&

b/4%&/*+%0&*+-*("2%&'%',6:&-%7%+-%+(%0&&A+(,-%&-%7%+-%+(%&*+1,6'"#,+&*+2,&2)%&BC@=&F"6-E"6%&,+/:&"//,E0&02"#("//:&-%2%(2%-&-%7%+-%+(%0&2,&'"+*1%02=&

int authenticate (char[] pwd) {!!int authorize = 0;!!char password[10];!!…!!int i=0;!!while(password[i] = pwd[i]) !! !i++;!!…!!if(authorize) !! !return 1;!!return 0;!

}!

"42),6*<%&o&i&

*&o&i&

02,6%&2,&7"00E,6-d*e&

/,"-&7E-d*e&

/,"-&"42),6*<%&

/,"-&*&

*&o&*&p&\&

Page 156: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

"42),6*<%&o&i&

*&o&i&

02,6%&2,&7"00E,6-d*e&

/,"-&7E-d*e&/,"-&"42),6*<%&

/,"-&*&

*&o&*&p&\&

Z)*2%&/*+%0&*+-*("2%&Q":@/*"0&6%/"#,+0)*70&

\^&

Page 157: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

authorize = 0;!i = 0;!while(…) {!

!tmp1 = pwd[i]!!password[i] = tmp1!!tmp2 = i;!!i = tmp2 + 1!

}!…!tmp = authorize;!if(tmp)!

!…!!

7E-&

7"00E,6-&

"42),6*<%&

\_&

*&

7E-&(,+2"*+0&m/,+87"00E,6-n&2'7\&"+-&2'7I&"6%&6%8*02%60&

Z6*2%&B+2%86*2:&>%0#+8&OZB>P&R=&@L6*#-*0;&M=M"-"6&%2&"/=&R6%$%+#+8&'%',6:&%37/,*20&E*2)&ZB>=&B+&BAAA&C:'7,0*4'&,+&C%(46*2:&"+-&R6*$"(:;&Iiil&

Q*0'"2()K&q*,/"#,+&-%2%(2%-r&

s/t&s,t&s+t&s8t&s7t&s"t&s0t&s0t&sEt&s,t&s6t&s-t&

i&i&i&i&

i&i&i&

i&

s/t&s,t&s+t&s8t&s7t&s"t&s0t&s0t&sEt&s,t&

Page 158: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

q4/+%6".*/*2:&M,$%6"8%&

•  R6,$*-%0&7"6#"/&'%',6:&0"1%2:&•  Q%',6:&0"1%2:&%66,60&-%2%(2%-&*+(/4-%K&

–  b4u%6&,$%664+0&–  T"+8/*+8&7,*+2%6&6%1%6%+(%0&OH0%&"a%6&16%%P&–  Z*/-&7,*+2%6&"((%00%0&

•  C2,6%&p&?,"-&()%(L0&"/0,&76%$%+2&/%"L"8%&,1&(,+S-%+#"/&*+1,6'"#,+&

•  ?*.%62:&@6()*2%(246%&*'7/%'%+20&ZB>&*+&)"6-E"6%&

\`&

Page 159: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

?,"-&B+0264(#,+&C%'"+#(0&/,"-&"--6;&6%8*,+&

v  72%&!&R"8%&>"./%&%+26:&1,6&"--6&v  B0&72%"6%"-&264%w&

R"8%&>"./%&A+26:&OR>AP&M)%(L&

v  OB+0264(#,+=6%8*,+oo&"--6=6%8*,+P&w&/,"-&K&1"*/&

5%8*,+&M)%(L&

v  (4665%8&!&Q%'d"--6e&

?,"-&

\l&

Page 160: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

C2,6%&B+0264(#,+&C%'"+#(0&02,6%&$"/;&"--6;&6%8*,+&

v  72%&!&R"8%&>"./%&A+26:&1,6&"--6&v  B0&72%"E6*2%&264%w&

R"8%&>"./%&A+26:&OR>AP&M)%(L&

v  OB+0264(#,+=6%8*,+&oo&"--6=6%8*,+P&w&02,6%K&1"*/&

5%8*,+&M)%(L&

v Q%'d"--6e&!&$"/4%&

C2,6%&

\k&

Page 161: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!4'.%6&,1&5%8*,+0&T%2%(2%-&

i&

^i&

\ii&

\^i&

Iii&

I^i&

Wii&

W^i&

\_]=8<*7& \`^=$76& I^_=.<*7I& Wii=2E,/1& ]i\=.<*7I&Ii&

A"()&6%8*,+&6%76%0%+20&7,00*./%&N,E&,1&-"2"&2)6,48)&'%',6:&

Page 162: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

?*.%62:&@6()*2%(246%&C2"240&•  T%0*8+&

–  B+*#"/&BC@&(,'7/%2%&–  C%(,+-&*2%6"#,+&,1&-%0*8+&*+&76,86%00&

•  >%()+,/,8:&–  M,'7*/%6&&

•  @+"/:0*0&7"00&(,'7/%2%&•  M,-%&J%+%6"#,+&*+&76,86%00&

–  @00%'./%6&(,'7/%2%&–  ?*+L%6&(,'7/%2%&–  BC@&D4+(#,+"/&C*'4/"2,6&(,'7/%2%&–  BC@&>*'*+8&C*'4/"2,6&*+&76,86%00&–  T:+"'*(&G7#'*<%6&*+&76,86%00&

I\&

Page 163: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

x4%0#,+0w&

II&

Page 164: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&!'#()*+,-),.(-''

$-/+0+12'345'

Page 165: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%#&'()*•  +,-.#/)#)*

•  0#1(")#2,*

•  3$&"(4#%25.'(*(6(%78/$*

•  9/$8$7/7)*'(5"$#$:*

•  ;(&5#"*5$4*;(%/1(",*

Page 166: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()"*&•  +,-./%,'*&

–  01%'/234(1&5.'&6"1)(7,8"4(1&

•  91:/.),3'";,#,'*&–  <;(213./&

•  &=."/1,1>&–  ?.'./(>.1.(2%&01@(/7"4(1&A#(B&!/"3$,1>&&–  CD:#,3,'&).:.1).13.&.13(),1>&

•  6.:",/&–  E2'('(7,3&F,1"/*&5'/23'2/.&6"1)(7,8"4(1&&

Page 167: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$"%&'()*+(%•  ,#-'"(#+.%

–  /0(+")12$0%3'+%&405$6#742$0%–  !"#$%&'()*

•  809"'5#1+4:#*#+.%–  ;:$)01'"<%+%#(*,-./*

•  %='4"0#0>%–  ?'+'"$>'0'$)(@0(123-.%/0A$"642$0%B*$C%D"41E#0><%%%–  FG9*#1#+%5'9'05'01'%'01$5#0>%–  456-57%51*8-.9:-.(*;(.<&.#-57(*=&25'(.)*

•  &'94#"%–  H)+$+$6#1%I#04".%3+")1+)"'%&405$6#742$0%–  04>!!?04%%

Page 168: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'&()*!+,%-./&%*

•  0%12-3+)*4+"5"+-6*– 7.#+&,+#$.3"#32+,'*#$,%("-*– 8.94'"*,+#$.3"#32+,'*":3"%-.&%-*– ;'",%*-)-3"9*&+(,%.<,/&%*

Page 169: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'#&("')*'#("%&+)*&,-.,".)

/"0&'#&'.)1/)

*'#("%&+)1/)

234)

*56)

7!8!)

9:)

Page 170: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()!"%*&#"+)

!"#$% &'()*+(",-./% 0(.$12")$%

+,&-"%) !'%./0)1+.234./)5-&403'"+)+&6")#73//"2+8) 9:;)

1!9)) <"()+'.%30")=.%)1!9) >?@)

AB1!<) ,%3#C&/0)&/=.%-34./)D.E) >?@F)G3'3)

H32E3%") I/.-32()6"'"#4./F)J"3%/&/0) >?@F)G3'3F)KA)

A3'#7) ,%3/+="%)>,9J)'.)!"#$%")1L)56(/3-&#)#7"#C&/08) >?@F)G3'3)

9"#.*"%() >7"#CM.&/'F)%"#.*"%()3/6)%"+'.%") G3'3)

Page 171: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+,$%*$-)%'

!%*-),$"'./'

0123'

0123'

0123'024/51'

0166'

636'0527'

0123'

638.('

9:;'

<10'

Page 172: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+),&#%-.%#/&'"#'$%")

01234)

513)

161)

,1,789)

0:;;15)2*,1<)

84*!=):>*2)

!*?>@A+<B3)

>B>)CBA@2*A1)

>8):>*2)

Page 173: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*#+#)+,'%+

•  -'./+),+0#1%)*23+#$.4%516+'%.751$.14%$++– 89+:;<+

•  ='>+5?@A$?$*1'()*#+'%$+@%$&'A$*1+– B)*6+9B+

•  B6#1$?#+'%$+.)*C24%$>+5*.)%%$.1A6+– :)41$%++

•  B6#1$?+4@>'1$+,4*.()*#+'%$+'AD'6#+#4#@$.1E+– F)*&$*5$*1+4@>'(*2+5#+'A#)+.)*&$*5$*1+'G'./+#4%,'.$+

+++

+

Page 174: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%!&'()*"&%

•  +",%-'..//(%0"#1&234%%

•  50%6&27"%%

•  !'.8)%'3%9-5:%;5<%– 6.'((",%=2)23%

Page 175: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#"$%&'()'#*+'(,'-#%.%'

!" #$%&" '()*+,-(.")''/*01#2'+3%04*'56'!789:;!'' :5<2=23"3',''>3?325='@5*@$AA3*@B'8C#@.%'' :5<=23"3'D''752B<5A=E0@'F0@A5#A@E0"3@"$A3%'' GHI'J''K!LM#%3+'%326LE3#20*4'' ':5<=23"3'N''K=1<0O3+'/*65A<#15*'P25Q'-A#@.0*4'R:5<=023AS'' 'DHI'T''/*U3@15*LM#%3+'!B<M05"3'' ':5<=23"3'V''/!9'3W"3*%05*%'' ':5<=23"3'G''>B*#<0@'>0?3A%0X3+'93=20@#%'L'/*01#2'>3%04*'' ':5<=23"3')H'';#A+Q#A3'%$==5A"'65A'/!9'' ':5<=23"3'))''Y<$2#15*'3?#2$#15*'K!LM#%3+'%326'E3#20*4'' 'GHI'),''/*01#2'E#A+Q#A3'%$==5A"'65A'E3#20*4'' 'P5A"E@5<0*4')D'/!9'%$==5A"3+'!B<M05"3' 'P5A"E@5<0*4')J''>363*%3%'#4#0*%"'@5*@$AA3*@B'#C#@.%' 'ZHI')Z''!789:;!'#A@E0"3@"$A3'#*+'+3%04*' ',ZI'

Page 176: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+,-./0,•  123,4%56789'**6$,:"$*6;'#%$%<=,>'&<);?,@,A6<;%&,B);,A6'+";%*C,D*B);E'()*,F6'G'C6,•  H)9*,I6EE6J,K)#6;<,A';(*J,@5'E,L'G+E'*,'*5,4%E9',46<9"E'59'M'*J,,•  !;)&665%*C+,)B,<96,NO<9,@8APDQQQ,D*<6;*'()*'$,4=ER)+%"E,•  )*,8)ER"<6;,@;&9%<6&<";6,-D48@0J,/S2/J,!);<$'*5J,TKJ,U4@V,-@&&6R<'*&6,•  ;'<6?,2WX0,

•  1/3,Y%E6,L';R?,K6<9%*G%*C,Y%E6G66R%*C,'*5,!6;B);E'*&6,A6'+";6E6*<,A6&9'*%+E+,<),A%(C'<6,4%56,89'**6$+,,•  K)#6;<,A';(*J,H)9*,I6EE6,'*5,4%E9',46<9"E'59'M'*J,•  !;)&665%*C+,)B,<96,NO<9,@8APDQQQ,D*<6;*'()*'$,4=ER)+%"E,)*,8)ER"<6;,•  @;&9%<6&<";6,-D48@0J,/S2/J,!);<$'*5J,TKJ,U4@V,-@&&6R<'*&6,;'<6?,2WZX0,

•  1N3,K'R%5,D56*([&'()*,)B,@;&9%<6&<";'$,\)]$6*6&G+,M%',!;6&%+6,QM6*<,8)"*(*C,•  H)9*,I6EE6,'*5,4%E9',46<9"E'59'M'*J,,•  !;)&665%*C+,)B,<96,NW<9,@8APDQQQ,D*<6;*'()*'$,4=ER)+%"E,)*,8)ER"<6;,@;&9%<6&<";6,-D48@0^J,/S22J,4'*,H)+6J,8@J,

U4@V,-@&&6R<'*&6,;'<6?,2OZX0,

•  1_3,G`"';5?,F%C9<a6%C9<,b6;*6$,!;)<6&()*,'C'%*+<,K6<";*7<)7"+6;,@]'&G+,•  :'+%$6%)+,!V,b6E6;$%+J,`6);C%)+,!);<)G'$%5%+J,'*5,@*C6$)+,IV,b6;)E=(+V,Y),'RR6';,%*,<96,!;)&665%*C+,)B,<96,/2+<,

U4QcDd,46&";%<=,4=ER)+%"EV,@"C"+<,/S2/J,\6$$6M"6J,L@V,-@&&6R<'*&6,;'<6?,2OV_X0,

•  1e3,4E'+9%*C,<96,`'5C6<+?,f%*56;%*C,K6<";*7T;%6*<65,!;)C;'EE%*C,U+%*C,D*7!$'&6,8)56,K'*5)E%g'()*h,•  :'+%$%+,!'RR'+J,A%&9'$%+,!)$=&9;)*'G%+J,'*5,@*C6$)+,IV,b6;)E=(+V,D*,!;)&665%*C+,)B,<96,NN;5,DQQQ,4=ER)+%"E,)*,

46&";%<=,i,!;%M'&=,-4i!0J,RRV,jS2,7,j2eV,A'=,/S2/J,4'*,>;'*&%+&)J,8@V,-@&&6R<'*&6,;'<6?,2NX0,

Page 177: People | MIT CSAIL€¦ · kBouncer Partial control-flow integrity against ROP Transparent Applicable on third-party applications Compatible with code signing, self-modifying code,

!"#$%&'()*+,-./0,•  123,4,56*67'$,4887)'&9,:)7,;<&%6*=$>,4&&6$67'(*?,@)AB'76C#'+6D,E>*'F%&,E'=',G$)B,H7'&I%*?,)*,J)FF)D%=>,K'7DB'76,•  L'*?I))I,M66N,56)7?%)+,!)7=)I'$%D%+N,O'+%$6%)+,!P,L6F67$%+N,@)"F>'D668,59)+9N,E'Q%D,RP,4"?"+=N,'*D,4*?6$)+,EP,L67)F>(+P,R*,!7)&66D%*?+,):,=96,ST=9,

R*=67*6=,@)&%6=>,-R@UJ0,@>F8)+%"F,)*,V6=B)7I,'*D,E%+=7%#"=6D,@>+=6F+,@6&"7%=>,-@VE@@0P,G6#7"'7>,/WS/N,@'*,E%6?)N,J4P,-4&&68='*&6,7'=6X,SYPZ[0,

•  1Y3,\U!,!'>$)'D,E6=6&()*,]+%*?,@86&"$'(Q6,J)D6,;^6&"()*,•  _%&9'$%+,!)$>&97)*'I%+,'*D,4*?6$)+,EP,L67)F>(+P,R*,!7)&66D%*?+,):,=96,2=9,R*=67*'()*'$,J)*:676*&6,)*,_'$%&%)"+,'*D,]*B'*=6D,@)AB'76,

-_4`a4\;0N,88P,bZ,C,2bP,U&=)#67,/WSSN,G'c'7D)N,!\P,-d6+=,!'867,4B'7D0,

•  1Z3,M"*:6*?,.'*?N,4*?,J"%N,@'$Q'=)76,MP,@=)$:)N,@%F9',@6=9"F'D9'Q'*e,fJ)*&"776*&>,4g'&I+ef,=96,G)"7=9,]@;VRh,a)7I+9)8,)*,K)=,H)8%&+,%*,!'7'$$6$%+Fe,/WS/iW2iWYP,

•  1T3,4*?,J"%N,M'(*,L'='7%'N,@'$Q'=)76,MP,@=)$:)e,fG7)F,!76>,H),K"*=67X,H7'*+:)7F%*?,`6?'&>,;F#6DD6D,E6Q%&6+,R*=),;^8$)%='()*,@6*+)7,57%D+ef,H96,/Y=9,4**"'$,J)F8"=67,@6&"7%=>,488$%&'()*+,J)*:676*&6,-4J@4J0e,/WSSiS/iWbP,

•  1SW3,4*?,J"%N,@'$Q'=)76,MP,@=)$:)e,fE6:6*D%*?,`6?'&>,;F#6DD6D,@>+=6F+,B%=9,@)AB'76,@>F#%)=6+ef,H96,Sj=9,R*=67*'()*'$,@>F8)+%"F,)*,\6&6*=,4DQ'*&6+,%*,R*=7"+%)*,E6=6&()*,-\4RE0e,/WSSiWTi/W,

•  1SS3,4*?,J"%N,@'$Q'=)76,MP,@=)$:)N,M'(*,L'='7%'e,fL%$$%*?,=96,_>=9,):,J%+&),RU@,E%Q67+%=>X,H)B'7D+,\6$%'#$6N,`'7?6C@&'$6,;^8$)%='()*,):,J%+&),RU@ef,b=9,]@;VRh,a)7I+9)8,)*,Uk6*+%Q6,H6&9*)$)?%6+,-aUUH0e,/WSSiWZiWZ,

•  1S/3,\"*(F6,4+>*&97)*)"+,G'"$=,H)$67'*&6,Q%',@86&"$'()*,."*,l9'*?N,@)"F>'D668,59)+9N,M%'$",K"'*?N,M'6,aP,`66N,@&)g,4P,_'9$I6N,'*D,E'Q%D,RP,4"?"+=P,!7)&66D%*?+,):,=96,/WS/,R*=67*'()*'$,@>F8)+%"F,)*,J)D6,56*67'()*,'*D,U8(F%m'()*,-J5U0N,487%$,/WS/P,,

•  1Sn3,4,56*67'$,4887)'&9,:)7,;<&%6*=$>,4&&6$67'(*?,@)AB'76C#'+6D,E>*'F%&,E'=',G$)B,H7'&I%*?,)*,J)FF)D%=>,K'7DB'76,,L'*?I))I,M66N,56)7?%)+,!)7=)I'$%D%+N,O'+%$6%)+,!P,L6F67$%+N,@)"F>'D668,59)+9N,E'Q%D,RP,4"?"+=N,'*D,4*?6$)+,EP,L67)F>(+P,!7)&66D%*?+,):,=96,ST=9,R*=67*6=,@)&%6=>,-R@UJ0,@>F8)+%"F,)*,V6=B)7I,'*D,E%+=7%#"=6D,@>+=6F+,@6&"7%=>,-VE@@0N,G6#7"'7>,/WS/P,,

•  1Sj3,@86&"$'(Q6,@68'7'()*,:)7,!7%Q'(m'()*,'*D,\6D"&()*+N,V%&I,!P,M)9*+)*N,K'*c"*,L%FN,!7'I'+9,!7'#9"N,4>'$,l'I+N,'*D,E'Q%D,RP,4"?"+=P,!7)&66D%*?+,):,=96,nn7D,4J_,@R5!`4V,J)*:676*&6,)*,!7)?7'FF%*?,`'*?"'?6,E6+%?*,'*D,RF8$6F6*='()*,-!`ER0N,M"*6,/WS/P,,