We think you have liked this presentation. If you wish to download it, please recommend it to your friends in any social system. Share buttons are a little bit lower. Thank you!
Presentation is loading. Please wait.
Published byPranav Jelley
Modified about 1 year ago
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Buffer Overflow Causes Author: Jedidiah R. Crandall, This Document was Funded by the National Science Foundation Federal Cyber Service Scholarship For Service Program: Grant No Distributed July 2002 Embry-Riddle Aeronautical University Prescott, Arizona USA
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Causes of Buffer Overflows This section explains some of the causes of buffer overflows and types of buffer overflow attacks in a not-too-technical manner The intention is to give the reader an appreciation for the complexity of the problem
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Types of buffer overflow attacks Stack smashing or heap-based attacks The attacker can hijack execution of the program, and if the program was running with elevated privileges, the attacker now has those privileges This is the way many worms spread by tricking a network server into running the a program the attacker wrote Data corruption An attacker can change their privileges or other security-related data by overwriting it in memory Program crash A program crash can lead to denial-of-service because the service that program was providing will not be there until the program is restarted Sometimes a program crash causes a “core dump” where the entire memory of the program (possibly security-sensitive data) is written out to a file the attacker may be able to read
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. What can cause buffer overflows? Careless use of buffers without bounds checking. Formatting and logical errors. Unsafe library function calls. Off-by-one errors. Old code used for new purposes (like UNICODE international characters). All sorts of other far-fetched but deadly-serious things you should think about.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Careless use of buffers without bounds checking This is the classical cause of a buffer overflow. It is a blatant programmer error analogous to trying to pour five gallons of water into a four gallon bucket. It can lead to the program being hijacked, data being corrupted, or the program crashing.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Formatting and logical errors Sometimes its not the size of the input but the value of the input that causes a buffer to overflow. The input might be an integer that you want to convert to an ASCII string. The buffer needs to be big enough to hold all of the digits of the biggest integer someone could enter. Otherwise the program might be vulnerable to program crashes or data corruption.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Unsafe library function calls A library is a collection of useful subroutines that a programmer can use in their program. The standard C library, which every C compiler has, has subroutines in it that can cause buffer overflows if not used properly. Programmers have to learn to use the library subroutines properly. Unsafe library function calls are responsible for many vulnerabilities of all types.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Off-by-one errors In C, if you create a buffer that will hold 100 bytes then it will only hold 99 ASCII characters (other than the NULL character at the end), the 99 th character being indexed with the number 98. This can lead to a lot of confusion even for seasoned C programmers who do bounds checking. This can lead to a small amount of data corruption or even a program crash.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. Old code used for new purposes Programmers often reuse code that someone else wrote a long time ago. If you write a program and limit a user’s input to 100 characters and then put them into the old code’s 101-byte buffer you can still get a buffer overflow. How? When the old code was written the programmer assumed the use of ASCII where 1 character fills 1 byte. Your new code uses UNICODE (supports international character sets) where 1 character fills two bytes. This was the cause of Code Red.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. All sorts of other far-fetched but deadly- serious things you should think about. User input is not always what causes buffer overflows, they may be caused through things like environment variables or race conditions. You don’t have to know all about environment variables or race conditions but if you’re managing a software project then your programmers should.
Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. About this Project This presentation is part of a larger package of materials on buffer overflow vulnerabilities, defenses, and software practices. For more information, go to: Also available are: Demonstrations of how buffer overflows occur (Java applets) PowerPoint lecture-style presentations on an introduction to buffer overflows, preventing buffer overflows (for C programmers), and a case study of Code Red Checklists and Points to Remember for C Programmers An interactive module and quiz set with alternative paths for journalists/analysts and IT managers as well as programmers and testers A scavenger hunt on implications of the buffer overflow vulnerability Please complete a feedback form at to tell us how you used this material and to offer suggestions for improvements.http://nsfsecurity.pr.erau.edu/feedback.html
Of. and a to the in is you that it at be.
The. of and a to in is you that it he for.
The. of and a to in is you that it he was.
High Frequency Words List A Group 1. the of and.
Debugging ACL Scripts. Basic Debugging Steps If the script failed, check the log. The log will tell you on what command the script failed. If knowing.
Can you see?. I like him. When will we go? All or some.
Contents Client-data script It refers to class of computer programs on the web that are executed client-side, by the user`s web browser, instead of server.
Summer Computing Workshop. Introduction to Variables Variables are used in every aspect of programming. They are used to store data the programmer needs.
Introduction to Software Exploitation Corey K.. All materials is licensed under a Creative Commons Share Alike license.
Dolch Words the of and to a in that is was.
Lets build fluency! The people By the water You and I.
High-Frequency Phrases First 100 Words. The people.
Writing for CS and CE Gabriel Dos Reis Assistant Professor Department of Computer Science and Engineering.
An introduction to pointers in c Pointers are Great!!! Pointers: are extremely powerful make some things much easier improve your program's efficiency.
SWE 681 / ISA 681 Secure Software Design & Programming: Lecture 3: Buffer Overflow Dr. David A. Wheeler
Oral Reading Fluency First 100 Most Used Phrases.
Probability and Statistics Representation of Data Measures of Center for Data Simple Analysis of Data.
Acceptance Testing. What Is Acceptance Testing Customers write acceptance tests to determine if the system is doing the right things. Acceptance tests.
A Practical Guide To Unit Testing John E. Boal TestDrivenDeveloper.com.
Objects and Classes Part II CIS 61. Constructors We saw before two ways that member functions can be used to give values to the data items in an object.
Introduction Types of Errors Exceptions Exception Handling Common JAVA Exceptions Syntax of Exception Handling Code Example: Divide by Zero.
BD05/06 PL/SQL Introduction Structure of a block Variables and types Accessing the database Control flow Cursors Exceptions Procedures.
Computing Higher - SD Process – Topic 2 St Andrew’s High School Unit 2 Software Development Process.
Englewood Public Schools Englewood, Colorado 2009 A Compilation of E.W. Dolch 1936, The Reading Teachers Book of Lists, Fourth Edition,© 2000 by Prentice.
Introduction to Programming Logic Instructor: Professor Stephen Osborne.
LIS651 lecture 0 Gathering and showing data Thomas Krichel
A. as is a couldn’t does could has wouldn’t.
Algorithm Analysis. Assignment #8 Submit in PDF format ONLY !!! Assignment will NOT be accepted in format other than pdf. See and blackboard announcements.
Computers in the real world Objectives Understand the key ideas of the operating system Look at standard utility software and be able to describe them.
© 2016 SlidePlayer.com Inc. All rights reserved.