Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword or section
Like this
3Activity

Table Of Contents

0 of .
Results for:
No results containing your search query
P. 1
A Buffer Overflow Study - Attacks and Defenses (2002)

A Buffer Overflow Study - Attacks and Defenses (2002)

Ratings: (0)|Views: 41 |Likes:
Published by cuti8mao

More info:

Published by: cuti8mao on Sep 20, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/21/2014

pdf

text

original

 
A Buffer Overflow Study
Attacks & Defenses
Pierre-Alain FAYOLLE, Vincent GLAUMEENSEIRB
Networks and Distributed Systems2002
 
Contents
I Introduction to Buer Overows 5
1 Generalities 6
1.1 Process memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.1 Global organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.2 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2 Buers, and how vulnerable they may be . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Stack overows 12
2.1 Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2.1 Basic example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2.2 Attack via environment variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3 Attack using gets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Heap overows 18
3.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.1.1 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.1.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2 Motivations and Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Overwriting pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.3.1 Diculties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.2 Interest of the attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.3 Practical study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4 Overwriting function pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4.1 Pointer to function: short reminder . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4.2 Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.5 Trespassing the heap with
+ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.5.1 C++ Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.5.2 Overwriting the VPTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.6 Exploiting the malloc library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.6.1 DLMALLOC: structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.6.2 Corruption of DLMALLOC: principle . . . . . . . . . . . . . . . . . . . . . . . . . 34
II Protection solutions 37
4 Introduction 38
1
 
5 How does Libsafe work? 39
5.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2 Why are the functions of the libC unsafe ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.3 What does libsafe provide ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6 The Grsecurity Kernel patch 41
6.1 Open Wall: non-executable stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.2 PaX: non-executable stack and heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.2.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.3 Escaping non-executable stack protection: return into libC . . . . . . . . . . . . . . . . . 45
7 Detection: Prelude 47
7.1 Prelude and Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.2 Shellcode detection with Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.2.1 Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477.2.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487.3 A new danger: plymorphic shellcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487.3.1 Where the danger lies... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487.3.2 How to discover it ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
III First steps toward security 50
8 Installations 51
8.1 Installing Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518.2 Patching the Linux Kernel with Grsecurity . . . . . . . . . . . . . . . . . . . . . . . . . . 528.3 Compile time protection: installing Stack Shield . . . . . . . . . . . . . . . . . . . . . . . 538.4 Intrusion Detection System: installing Prelude . . . . . . . . . . . . . . . . . . . . . . . . 54
9 Protections activation 55
9.1 Setting up Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559.1.1 LD PRELOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559.1.2 /etc/ld.so.preload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559.2 Running Prelude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569.2.1 Libsafe alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569.2.2 Shellcode attack detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
IV Tests: protection and performance 59
10 Protection eciency 60
10.1 Exploits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6010.1.1 Stack overow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6010.1.2 Heap overow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6110.2 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6210.2.1 Zero protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6210.2.2 Libsafe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6310.2.3 Open Wall Kernel patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6410.2.4 PaX Kernel patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6410.2.5 Stack Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6510.3 Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652

Activity (3)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
Krisler12 liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->