k. salah1 buffer overflow the crown jewel of attacks

12
K. Salah 1 Buffer Overflow Buffer Overflow The crown jewel of attacks The crown jewel of attacks

Upload: william-flynn

Post on 17-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 1

Buffer OverflowBuffer Overflow

The crown jewel of attacksThe crown jewel of attacks

Page 2: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 2

Buffer OverflowBuffer Overflow Remains the principle method used to exploit software by remotely injecting Remains the principle method used to exploit software by remotely injecting

malicious codemalicious code It remains to be the “Crown Jewel of Attacks.”It remains to be the “Crown Jewel of Attacks.” Started with Robert Morris worm in 1988 exploiting a buffer overflow vulnerability Started with Robert Morris worm in 1988 exploiting a buffer overflow vulnerability

in in fingerdfingerd. . Code RedCode Red worm of 2001, exploiting a buffer overflow vulnerability in Mircosoft IIS worm of 2001, exploiting a buffer overflow vulnerability in Mircosoft IIS

(Internet Information Server). (Internet Information Server). The new MS Blaster of 2003, exploiting a buffer overflow vulnerability in MS The new MS Blaster of 2003, exploiting a buffer overflow vulnerability in MS

DCOM/RPC.DCOM/RPC. The next attack will be most likely linked to buffer overflowThe next attack will be most likely linked to buffer overflow

CERT Security Alert by Years– upto the first 2 months of 2002

Page 3: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 3

A living legend articleA living legend article

Best article on the know-how details of the Best article on the know-how details of the buffer overflow can be found in buffer overflow can be found in Phrack Phrack MagazineMagazine (issue 49) titled, published in (issue 49) titled, published in 1996: 1996: httphttp://://wwwwww..phrackphrack..orgorg//showshow..php?pphp?p==49&a49&a==1414

“ “Smashing the Stack for Fun and ProfitSmashing the Stack for Fun and Profit,” ,” ByBy

[email protected]@underground.org

Page 4: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 4

c = 3

b = 2

a = 1

ret address

sfp

buffer ]5[1

buffer2 ]10[

Buf

fer

grow

s do

wnw

ard

Sta

ck g

row

s up

war

dBottom of stackTop of memory

Top of stackBottom of memory

Page 5: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 5

*str

ret address

sfp

buffer [16]

Bottom of stackTop of memory

Top of stackBottom of memory

Sta

ck g

row

s up

war

d

Buf

fer

grow

s do

wnw

ard

Called Payload

“This is a hex representation of some binary executable code”

Page 6: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 6

Unsafe functions in the standard C LibraryUnsafe functions in the standard C Library

Page 7: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 7

“ “C gives you a rope to build a bridge and C gives you a rope to build a bridge and hang yourself”hang yourself”

Page 8: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 8

Finding buffer overflowFinding buffer overflow

Issue requests or arguments with long Issue requests or arguments with long stringsstrings Long strings end with “$$$$$”

If application crashes,If application crashes, Search core dump for “$$$$$” to find overflow

location Use reverse engineering

Some automated tools existSome automated tools exist

Page 9: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 9

Buffer Overflow CountermeasuresBuffer Overflow Countermeasures

Validate all arguments or parameters received whenever you write a Validate all arguments or parameters received whenever you write a function.function. Bounds checking Performance is compromised!!

Use secure functions instead, e.g., strncpy() and strncat()Use secure functions instead, e.g., strncpy() and strncat() Use safe compilersUse safe compilers

Watch out for free compilers!!! Can be made by hackers, for hackers! Test and review your code thoroughly -- the power of code reviewTest and review your code thoroughly -- the power of code review Keep applying patchesKeep applying patches Good site for advisory is CERT at Carnegie Mellon SWE InstituteGood site for advisory is CERT at Carnegie Mellon SWE Institute

http://www.cert.org/advisories

Can this attack be ever eliminated?Can this attack be ever eliminated?

Page 10: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 10

Protecting the StackProtecting the Stack Good number of references is found in:Good number of references is found in:

http://www.crhc.uiuc.edu/EASY/Papers02/EASY02-xu.pdf How? How?

Splitting control stack from data stack Control stack contains return addresses Data stack contains local variables and passed parameters

Use middleware software (libsafe) to intercept calls to library functions known to be vulnerable.

Using StackGuard and StackShield Adding more code at the beginning and end of each function Check to see if ret address is altered and signal a violation

Others Performance due to overhead is always as issue!

Page 11: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 11

The Adventure ContinuesThe Adventure Continues

Bypassing the countermeasure for smashing the stackBypassing the countermeasure for smashing the stack

Crispin Cowan, Steve Beattie, Ryan Finnin Day, Calton Pu, Perry Wagle and Erik Walthinsen. Protecting Systems from Stack Smashing Attacks with StackGuard

http://www.immunix.org/documentation.html

In May 2000 issue of Phrack Magazine (www.phrack.org) “Bypassing StackGuard and StackShield” by Bulba and Kil3r

<[email protected]>

Page 12: K. Salah1 Buffer Overflow The crown jewel of attacks

K. Salah 12

Buffer Overflow in Java and C#Buffer Overflow in Java and C#

More immune to BO vulnerabilitiesMore immune to BO vulnerabilities Still can happen JVM is written in C Possible to confuse type checking Hostile applets aren’t too hard to write

http://java.sun.com/sfaq/chronolgy.html (about 1 new vulnerability per month)

““type safe” language with strong type checkingtype safe” language with strong type checking Control flow safe: “jumps” must be within the function or do “call/return”Control flow safe: “jumps” must be within the function or do “call/return”

Using the JVM and its built-in bytecode verifier

Has no support for pointers to manipulate memory addressesHas no support for pointers to manipulate memory addresses

Has built-in security managers to define what resources to be accessedHas built-in security managers to define what resources to be accessed

Implements “code signing” to verify data origin and integrityImplements “code signing” to verify data origin and integrity