buffer overflow vulnerabilities and...

14
Buffer Overflow Vulnerabilities and Solutions Timothy Tsai Avaya Labs Research ICC 2002 April 29, 2002

Upload: others

Post on 29-May-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

Buffer Overflow Vulnerabilities and Solutions

Timothy TsaiAvaya Labs Research

ICC 2002April 29, 2002

Page 2: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 2

Overview•How significant are buffer overflows?

– Context of overall security picture•What are buffer overflows?•What the the possible solutions?

Page 3: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 3

Version 2.503 April 8, 2002; Copyright 2001-2002, The SANS Institute

Top Vulnerabilities That Affect All Systems (G)G1 - Default installs of operating systems and applicationsG2 - Accounts with No Passwords or Weak PasswordsG3 - Non-existent or Incomplete BackupsG4 - Large number of open portsG5 - Not filtering packets for correct incoming and outgoing addressesG6 - Non-existent or incomplete loggingG7 - Vulnerable CGI Programs

Top Vulnerabilities to Windows Systems (W)W1 - Unicode Vulnerability (Web Server Folder Traversal)W2 - ISAPI Extension Buffer OverflowsW3 - IIS RDS exploit (Microsoft Remote Data Services)W4 - NETBIOS - unprotected Windows networking sharesW5 - Information leakage via null session connectionsW6 - Weak hashing in SAM (LM hash)

Top Vulnerabilities To Unix Systems (U)U1 - Buffer Overflows in RPC ServicesU2 - Sendmail VulnerabilitiesU3 - Bind WeaknessesU4 - R CommandsU5 - LPD (remote print protocol daemon)U6 - sadmind and mountdU7 - Default SNMP Strings

The Twenty Most Critical Internet Security Vulnerabilities

? = buffer overflow vulnerability

?

??

?

??

?

Page 4: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 4

What Are the Problems?Buggy software design and development

– Programming for security is not taught– Good software engineering processes are not universal– Legacy code

System administration– Too many machines to administer– Too many platforms and applications to support– Too many updates and patches to apply– Administrators may be handcuffed (e.g., not allowed to block mai

attachments)– Not all administrators are up-to-date (e.g., desktop and home

users)• Too many unnecessary services

– Inadequate policies and proceduresNew technologies

– The Internet, wireless, converged communications, commercial web sites

– Vulnerabilities are quickly and widely published– Scripts and tools are downloadable (giving rise to "script kiddi– Large pool of victims– Remote attacks are easy to perpetrate (cheap access, high-speed

connections)

Page 5: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 5

Solutions•Education•Deployment of known technologies

(firewalls, VPN, encryption)•Better processes (design and code reviews,

testing)•Tools

– Software development tools (testing, code scanning)

– Software update tools (patches, virus updates)

– Security audit tools (passwords, ports, services)

– Run-time instrumentation

Page 6: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 6

Significance of Buffer Overflows

SecurityFocus

0

200

400

600

800

1000

1200

1400

1600

1994 1995 1996 1997 1998 1999 2000 2001 2002

Year

total-BOV

BOV

CVE

0

100

200

300

400

500

600

700

800

900

1999 2000 2001 2002

Y ear

Total-BOV

BOV

CERT

0

5

10

15

20

25

30

35

40

1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002

Year

Total-BOV

BOV

Page 7: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 7

What is a Buffer Overflow?

Buffer (80 bytes) fp ra

Attack code g &a br ub fa fg ee r

void foo(char * input_string){ char buffer[80];

strcpy(buffer,input_string);return;

}/* input_string =

attack code+garbage+&buffertotal length >= 88 bytes */

Page 8: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 8

Consequences of Buffer OverflowsCommon attack techniques• Find vulnerable programs

– Target root processes– “Fuzz” testing– Use source code and debugger to examine

stack contents• Write code

– Connect to port– Send data, including shellcode

Consequences• Root shell from remote attack site

– Compromise other machines (passwords)– Stage DDoS, man-in-the-middle attacks– Monitor LAN traffic

• Denial of service

Page 9: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 9

Buffer Overflow Solutions• Install patches

– Use checklists and web sites– Use update and audit tools

• Better programming– Use safe functions (snprintf instead of sprintf)– Use safe languages– Conduct code reviews– Use code scanners (ITS4, Splint)– Better testing

• Run-time instrumentation– Kernel patches (Openwall, PaX)– Compiler solutions (StackGuard, ProPolice,

StackShield)– Library solutions (Snarskii, Libsafe, BOWall)

Page 10: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 10

Kernel Patches•Mechanism

– Make parts of memory (stack, heap, data) non-executable

– Allow overflow to occur, but generate memory exception when executing attack code

•Pros– Automatically applied to all processes– Can catch some overflows in heap and

data space•Cons

– Requires kernel recompilation– Doesn’t catch return-into-libc exploits

Page 11: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 11

Compiler Solutions• Mechanism

– Instrument the compiler to insert additional runtime instrumentation

– Allow overflow to occur, but verify return address before returning from function to prevent execution of attack code

• Pros– Can be selectively applied to applications to

minimize overhead• Cons

– Requires recompilation of applications (or installation of pre-instrumented applications)

– Doesn’t catch small overflows

Page 12: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 12

Library Solutions•Mechanism

– Use shared or static library to intercept calls to vulnerable functions

– Perform bounds checking on function arguments to prevent overflow from occurring

•Pros– Easy to install

•Cons– Doesn’t catch overflows via non-

intercepted functions or code– Doesn’t catch small overflows

Page 13: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 13

Example of Libsafe Protection

Buffer (80 bytes) fp ra void foo(char * input_string){ char buffer[80];

strcpy(buffer,input_string);return;

}/*len(input_string)=88 bytes*/

char * libsafeStrcpy(char *dest,const char * src)

{ if (src is longer than max_size)report the event;

elsereturn strcpy(dest,src);

}

max_size=80

Page 14: Buffer Overflow Vulnerabilities and Solutionsicc2002.ieee-icc.org/notes/ICC2002_TimothyTsai_BAS.pdf · ICC2002 - 9 Buffer Overflow Solutions • Install patches – Use checklists

ICC2002 - 14

Recommendations•Turn off all unnecessary services (web, mail,

print, SNMP)– Use a firewall– Use intrusion detection tools

•Get latest versions of software, especially services

– Consider automatic update tools•Run security audit tools•Consider run-time instrumentation