Keywords: address randomization
Over the last few months there has been a large increase of bufferoverflow vulnerabilities being both discovered and exploited. Examplesof these are syslog, splitvt, sendmail 8.7.5, Linux/FreeBSD mount, Xt library, at, etc. This paper attempts to explain what buffer overflows are, and how their exploits work.Basic knowledge of assembly is required. An understanding of virtual memory concepts, and experience with gdb are very helpful but not necessary.We also assume we are working with an Intel x86 CPU, and that the operating system is Linux.
Some basic definitions before we begin: A buffer is simply a contiguous block of computer memory that holds multiple instances of the same data type. C programmers normally associate with the word buffer arrays. Most commonly, character arrays. Arrays, like all variables in C, can be declared either static or dynamic. Static variables are allocated at load time on the data segment. Dynamic variables are allocated at run time on the stack. To overflow is to flow, or fill over the top, brims, or bounds. We will concern ourselves only with the overflow of dynamic buffers, otherwiseknown as stack-based buffer overflows.
Keywords: code-injection attack
Keywords: security-economics
Keywords: address randomization
Keywords: buffer-overflow prevention, buffer-overflow detection
Keywords: unpublished, routing-security
Keywords: program flow control
Keywords: address randomization
Keywords: address randomization
Keywords: anti-censorship, anonymity
Keywords: anti-censorship, anonymity
Keywords: buffer-overflow prevention
Keywords: buffer-overflow detection
Keywords: buffer-overflow detection
The paper is aimed at examining the relationship between the three topics of the workshops that gave rise to this book: security, fault tolerance, and software assurance. Those three topics can be viewed as different facets of dependability. The paper focuses on diversity, as a desirable approach for addressing the classes of faults that underlay all these topics, i.e., design faults and intrusion faults.
Keywords: intrusion detection
Keywords: worms
Keywords: binary rewriting
Keywords: buffer-overflow detection
Keywords: code-injection attack, buffer-overflow detection
Keywords: buffer-overflow prevention
Keywords: buffer-overflow detection
Keywords: address randomization
Keywords: buffer-overflow prevention
Keywords: fault-tolerance
Because of prebinding, Mac OS X modifies executable files after they are installed. These modifications change cryptographic signatures of the executables, thus making it impractical to rely on cryptograhic signatures to verify integrity of Mac OS X executables. This paper discusses how cryptographic signatures can be computed for Mac OS X executables in such a way that the signatures are not modified by prebinding
Keywords: capabilities
Keywords: program flow control
Keywords: buffer-overflow prevention
Keywords: worms
Keywords: worms
Keywords: worms
Keywords: address randomization
Keywords: security-economics
Keywords: binary rewriting
Keywords: address randomization
Keywords: address randomization
Keywords: address randomization
Keywords: address randomization
Keywords: address randomization
Keywords: address randomization
Keywords: address randomization
Keywords: binary rewriting, buffer-overflow detection
Keywords: buffer-overflow detection
Keywords: access control, capabilities
Keywords: access control
Keywords: worms
Keywords: diversity, fault-tolerance
Keywords: worms
Keywords: worms
Keywords: capabilities
Keywords: security-economics
Keywords: anti-censorship
Keywords: worms
Keywords: worms
Keywords: buffer-overflow prevention, buffer-overflow detection
Keywords: access control, capabilities
A large class of security attacks exploit software implementation vulnerabilities such as unchecked buffers. This paper proposes Transparent Runtime Randomization (TRR), a generalized approach for protecting against a wide range of security attacks. TRR dynamically and randomly relocates a program's stack, heap, shared libraries, and parts of its runtime control data structures inside the application memory address space. Making a program's memory layout different each time it runs foils the attacker's assumptions about the memory layout of the vulnerable program and makes the determination of critical address values difficult if not impossible. TRR is implemented by changing the Linux dynamic program loader, hence it is transparent to applications. We demonstrate that TRR is effective in defeating real security attacks, including malloc-based heap overflow, integer overflow, and doublefree attacks, for which effective prevention mechanisms are yet to emerge. Furthermore, TRR incurs less than 9% program startup overhead and no runtime overhead.
Keywords: binary rewriting