+ All Categories
Home > Documents > 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves...

2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves...

Date post: 28-Dec-2015
Category:
Upload: clement-morrison
View: 220 times
Download: 4 times
Share this document with a friend
Popular Tags:
22
2012/02/07 YLJ@adlab 1 RIPE:RUNTIME INTRUSION PREVENTION EVALUATOR John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven Belgium ACSAC 2011
Transcript
Page 1: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

12012/02/07 YLJ@adlab

RIPE:RUNTIME INTRUSION PREVENTION EVALUATORJohn Wilander, Mariam KamkarLinkopings Universitet

Nick Nikiforakis, Yves Younan, Wouter JoosenKatholieke Universiteit Leuven Belgium

ACSAC 2011

Page 2: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

2

Agenda

Introduction How RIPE Works Attack Forms Countermeasures Evaluated Result Future Work

2012/02/07 YLJ@adlab

Page 3: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

3

Introduction

RIPE A deliberately vulnerable C program that

attacks itself to allow evaluation of countermeasures.

Contributions 850 working buffer overflow attack

forms Evaluation of 8 countermeasures 7% to 89% of attack forms prohibited

2012/02/07 YLJ@adlab

Page 4: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

4

How RIPE Works

2012/02/07 YLJ@adlab

Backend

(C)

Can be runstand-alone,command-line

Performsone attackper execution

Frontend

(Python)

Report

Drives

Page 5: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

5

Attack Forms

NDSS ’03 Testbed

2012/02/07 YLJ@adlab

Targ

et

Technique

loca

tio

n

20 attack forms

Page 6: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

6

Attack Forms

ACSAC ’11 Testbed

2012/02/07 YLJ@adlab

Targ

et

Technique

loca

tio

n

850 attack forms

FunctionAttack

code

20 attack forms

RET Old base ptr Func ptr Longjmp buffer Struct with buffer & func

ptr

Direct Indirect

memcpy str(n)cpy s(n)printf str(n)cat {s|f}scanf loop equiv of memcpy

Stack (local var & param)

Heap

BSS

Data

Shellcode

Shellcode + NOP

Shellcode + Polym. NOP

Return-into-libc

ROP

Page 7: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

7

Attack Forms

Example Direct Overflow Indirect Overflow Overflow Within Struct Injected Stackframe

2012/02/07 YLJ@adlab

Page 8: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

8

Countermeasures Evaluated

ProPolice (canary-based, variable reorder)

CRED (boundary checking, referent object)

StackShield, Libverify (copy & check)

Libsafe, LibsafePlus, LibsafePlus+TIED(library wrappers)

PAE & XD (non-executable memory)2012/02/07 YLJ@adlab

Page 9: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

9

Result

2012/02/07 YLJ@adlab

Page 10: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

10

Future Work

Save/load offsets to allow testing of ASLR,probabilistic memory safety

Other attack forms: Heap spraying Non-control data attacks

2012/02/07 YLJ@adlab

Page 11: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

11

Direct Overflow

2012/02/07 YLJ@adlab

Page 12: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

12

Indirect Overflow

2012/02/07 YLJ@adlab

Page 13: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

13

Overflow Within Struct

2012/02/07 YLJ@adlab

Page 14: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

14

Injected Stackframe

2012/02/07 YLJ@adlab

Page 15: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

15

ProPolice

2012/02/07 YLJ@adlab

Page 16: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

16

CRED(C Range Error Detector)

2012/02/07 YLJ@adlab

Page 17: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

17

StackShield

2012/02/07 YLJ@adlab

Page 18: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

18

StackShield

2012/02/07 YLJ@adlab

Page 19: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

19

Libverify

2012/02/07 YLJ@adlab

All Functions

Page 20: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

20

Libsafe

2012/02/07 YLJ@adlab

Page 21: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

21

LibsafePlus&TIED

2012/02/07 YLJ@adlab

Source code

Compile

with -g

Binary

Debug info

Offset from frame pointer and size for all buffers

Instruments all functionsto check bounds

Page 22: 2012/02/07 YLJ@adlab 1 John Wilander, Mariam Kamkar Linkopings Universitet Nick Nikiforakis, Yves Younan, Wouter Joosen Katholieke Universiteit Leuven.

22

XD(eXecute-Disable) + PAE(Physical Address Extension)

2012/02/07 YLJ@adlab


Recommended