BUFFER OVERFLOW ATTACK SARE THE most popular method intruders use to gain remote and privileged access to computer systems. Programs that fail to use appropriate bounds checking can allow an attacker to write data beyond the intended boundaries of a buffer and thus possibly corrupt control structures in the program. This enables an attacker to execute arbitrary code with the same privilege as the victim process. An attacker’s preference is usually to overwrite the saved instruction pointer that is pushed onto the stack before a function call or to overwrite a function pointer that will be used later in the program. It is also possible to use these attacks simply to overwrite other data.

This kind of attack is harder to prevent but, fortunately, is less common than the previous type and is not discussed here. Buffer overflows first gained attention with the release of the famed Morris worm which exploited a buffer overflow in fingerd [1]. Despite the attack used in the Morris worm, buffer overflows did not become popular until the release of two papers that detailed the discovery and exploitation of these vulnerabilities [2,3]. This paper discusses vulnerabilities in two compiler-level protection mechanisms, StackGuard and Point-Guard. While this paper takes a critical look at both of these solutions, it does not intend to make them seem insignificant. The attacks described in this paper help to show how StackGuard and PointGuard should be complemented to construct a more complete protection system.

Download Defeating Compiler-level Buffer Overflow Protection