Download PDF

Eurosec, Date: 2009/03/31 - 2009/03/31, Location: Nuremberg

Publication date: 2009-03-31
ISSN: 978-1-60558-472-0
Publisher: Association for Computing Machinery (ACM); New York

Proceedings of the 2nd European Workshop on System Security

Author:

Strackx, Raoul
Younan, Yves ; Philippaerts, Pieter ; Piessens, Frank ; Lachmund, Sven ; Walter, Thomas ; Markatos, Envagelos ; Costa, Manuel

Keywords:

security

Abstract:

Many countermeasures exist that attempt to protect against buffer overflow attacks on applications written in C and C++. The most widely deployed countermeasures rely on artificially introducing randomness in the memory image of the application. StackGuard and similar systems for instance will insert a random value before the return address on the stack, and Address Space Layout Randomization (ASLR) will make the location of stack and/or heap less predictable for an attacker. A critical assumption in these probabilistic countermeasures is that attackers cannot read the contents of memory. In this paper we show that this assumption is not always justified. We identify a new class of vulnerabilities – buffer overreads – that occur in practice and that can be exploited to read parts of the memory contents of a process running a vulnerable application. We describe in detail how to exploit an application protected by both ASLR and stack canaries if the application contains both a buffer overread and a buffer overflow vulnerability. We also provide a detailed discussion of how this vulnerability affects other, less widely deployed probabilistic countermeasures such as memory obfuscation and instruction set randomization.