Buffer overflow protection: Difference between revisions

Content deleted Content added
m Reverted 1 edit by 114.124.236.209 (talk) to last revision by Kiwi128 (TW)
No edit summary
Tags: Visual edit Mobile edit Mobile web edit
Line 1:
'''Buffer overflow protection''' is any of various techniques used during software development to enhance the security of executable programs by detecting [[buffer overflow]]s on [[call stack|stack]]-allocated variables, and preventing them from causing program misbehavior or from becoming serious [[computer security|security]] vulnerabilities. A stack buffer overflow occurs when a program writes to a memory address on the program's call stack outside of the intended data structure, which is usually a fixed-length buffer. Stack buffer overflow bugs are caused when a program writes more data to a buffer located on the stack than what is actually allocated for that buffer. This almost always results in corruption of adjacent data on the stack, which could lead to program crashes, incorrect operation, or security issues.
 
Typically, buffer overflow protection modifies the organization of stack-allocated data so it includes a ''[[stack canary|canary]]'' value that, when destroyed by a stack buffer overflow, shows that a buffer preceding it in memory has been overflowed. By verifying the canary value, execution of the affected program can be terminated, preventing it from misbehaving or from allowing an attacker to take control over it. Other buffer overflow protection techniques include ''[[bounds checking]]'', which checks accesses to each allocated block of memory so they cannot go beyond the actually allocated space, and ''tagging'', which ensures that memory allocated for storing data cannot contain executable code.
 
Overfilling a buffer allocated on the stack is more likely to influence program execution than overfilling a buffer on the [[dynamic memory allocation|heap]] because the stack contains the return addresses for all active function calls. However, similar implementation-specific protections also exist against heap-based overflows.
 
There are several implementations of buffer overflow protection, including those for the [[GNU Compiler Collection]], [[LLVM]], [[Microsoft Visual Studio]], and other compilers.
 
==Overview==