Buffer overflow

28
Buffer Overflow

Transcript of Buffer overflow

Page 1: Buffer overflow

Buffer Overflow

Page 2: Buffer overflow

Prepared by :Qusai Nsour

BAU- Computer science master2015

Page 3: Buffer overflow

What is a Data buffer?

• In computer science, a data buffer (or just buffer) is a region of a physical memory storage used to temporarily store data while it is being moved from one place to another.

• https://en.wikipedia.org/wiki/Data_buffer#Buffer_versus_cache

Page 4: Buffer overflow

What is a Data buffer?- cont.

• The RP (resource pool) divides its processor memory into pools. Each pool contains a number of memory blocks of equal size. These memory blocks are called buffers.

• http://www.cisco.com/c/en/us/support/docs/interfaces-modules/channel-interface-processors/14620-41.html

Page 5: Buffer overflow

Why Buffers?

• Like a cache, a buffer is a "midpoint holding place" but exists not so much to accelerate the speed of an activity as to support the coordination of separate activities.

• http://whatis.techtarget.com/definition/buffer

Page 6: Buffer overflow

Bounded Buffers

• To minimize the amount of waiting time for threads that share resources and operate at the same average speeds, we can implement a bounded buffer that provides a fixed number of buffer cells into which the Producer can place values, and from which the Consumer can retrieve those values.

• Java™ How to Program, Seventh Edition By H. M. Deitel - Deitel & Associates, Inc., P. J.

Page 7: Buffer overflow

Buffer failure

• Buffer PoolsThere are six buffer pools:1.Small—104 bytes buffers2.Middle—600 byte buffers3.Big—1524 byte buffers4.VeryBig—4520 byte buffers5.Large—5024 byte buffers6.Huge—18024 byte buffers

Page 8: Buffer overflow

Buffer failure – cont.

• For example, if an interface processor needs to pass a 20 byte packet to the RP, it “asks” for a Small buffer. If an interface processor needs to pass a 500 byte packet to the RP, it asks for a Middle buffer, and so forth.

• Note: The interface processor must ask for a buffer of a certain size.

• When the interface processor asks for a buffer, this occurs:

Page 9: Buffer overflow

Buffer failure – cont.

• If a free buffer exists within the requested pool, the buffer is granted. Otherwise, the request generates a “miss” and the buffer algorithm tries to “create” more buffers for that pool .

Page 10: Buffer overflow

Buffer failure – cont.

• When IOS fails to get a Small buffer, it does not drop the packet. It increments the failed counter and falls through to the next level buffer, which is the Middle buffer and requests a buffer there. If it fails to get a Middle buffer, it requests the next level buffer, which is a Big buffer. This process continues until it hits the Huge buffer pool. If it fails to get a Huge buffer, then it drops the packet.

Page 11: Buffer overflow

Buffer failure – cont.

• When you use the IBM feature set, a miss almost always generates a failure.

• Although the IBM features may be process-switched, the code to get a buffer to pass a packet from an interface to the RP executes at interrupt level.

Page 12: Buffer overflow

Buffer failure – cont.

• Buffers can not be created at interrupt level; consequently, a miss queues its request for more buffers to the RP.

• Because an additional buffer can not be created on the spot, the buffer request fails, and the packet is dropped.

Page 13: Buffer overflow

Buffer failure – cont.• Buffer failures are one of the most common reasons for

packet drops. When packet drops occur because of buffer failure, this occurs:

• After a buffer failure, the RP has an outstanding request to create more buffers of the appropriate size for the particular pool.

• While the RP is servicing the create buffers request, there may be additional failures in the pool.

• The RP may even fail to create more buffers, because of memory constraints in the system when the extra buffers are required.

Page 14: Buffer overflow

Buffer failure – cont.

• Essentially, the create buffers operation could take several microseconds, in which packets are continually dropped because of the buffer shortage.

• In addition, if buffers are used as quickly as they are created, the RP could be forced to spend more time on buffer creation than on packet processing.

• This may cause the RP to begin to drop packets so quickly that performance degrades and sessions are lost.

• http://tools.cisco.com/search/results/en/us/get#q=buffer+overflow

Page 15: Buffer overflow
Page 16: Buffer overflow

How buffer overflow happens?

Page 17: Buffer overflow

How buffer overflow happens? –cont.

• This a demo on c++ #include <stdio.h>Int main(){Char str [20];Gets (str);Puts (str);Return (0);}

Page 18: Buffer overflow

How buffer overflow happens? –cont.

• The string to get from user is predefined to be 20 character in length

• The program will print what the user send using “puts”

Page 19: Buffer overflow

How buffer overflow happens? –cont.

• Run the program using cmd

Page 20: Buffer overflow

How buffer overflow happens? –cont.

• Print anything ; say Mohammad for example

• The program will print “mohammad”

Page 21: Buffer overflow

How buffer overflow happens? –cont.

• Try typing some thing that is more than 20 char.

• You will receive the warning window as shown at left

Page 22: Buffer overflow

How buffer overflow happens? –cont.

• Expand the warning window and check the exception offset to see the error

• https://www.youtube.com/watch?v=EekP8tuAuQw

Page 23: Buffer overflow

What is a buffer overflow and how does it work?

• A buffer is a temporary area for data storage. When more data than was originally allocated to be stored in a buffer gets placed there by a program or system process, the extra data will overflow, hence the name, causing some of that data to leak out into other buffers, which can corrupt or overwrite whatever data they were holding.

Page 24: Buffer overflow

What is a buffer overflow and how does it work?- cont.

• In a buffer-overflow attack, the extra data sometimes holds specific instructions for actions intended by a hacker or malicious user; for example, the data could trigger a response that damages files, changes data or unveils private information.

Page 25: Buffer overflow

What are buffer overflow types?

• Heap-based, which are difficult to execute and the least common of the two, attack an application by flooding the memory space reserved for a program.

• Stack-based buffer overflows, which are more common among hackers, exploit applications and programs by using what is known as a stack: memory space used to store user input.

Page 26: Buffer overflow

How to stop a buffer overflow from attacking applications

• 1. Avoid using library files: Library files, which are used in programming language and are inherently insecure, are a target for hackers during application attacks. Any weakness found by a hacker in a library file will also exist in all applications that use that library file, giving hackers a glaring target for a potential attack.

Page 27: Buffer overflow

How to stop a buffer overflow from attacking applications – cont.

• 2. Filter user input: Filtering out possibly dangerous HTML code and characters that could cause database problems. For example, in ASP code, the apostrophe, quotation mark and ampersand symbols are all reserved symbols. These reserved symbols can't be included within a user's input or they will cause the application to crash. Filter them out and replace them with something else to avoid complications and problems.

Page 28: Buffer overflow

How to stop a buffer overflow from attacking applications – cont.

• 3. Test applications: Be sure to test all applications prior to deployment; trying to break into every application to ensure secure coding. If the application breaks, it will be clear that there is a problem that needs to be fixed before a hacker is able to exploit it.

• http://searchsecurity.techtarget.com/tip/How-to-stop-buffer-overflow-attacks-and-find-flaws-vulnerabilities