Information Technology Reference
In-Depth Information
Chapter 1
Kernel Stack Overflows
Elimination
Yair Wiseman
Bar-Ilan University, Israel
Joel Isaacson
Ascender Technologies, Israel
Eliad Lubovsky
Bar-Ilan University, Israel
Pinchas Weisberg
Bar-Ilan University, Israel
abStract
The Linux kernel stack has a fixed size. There is no mechanism to prevent the kernel from overflowing the
stack. Hackers can exploit this bug to put unwanted information in the memory of the operating system
and gain control over the system. In order to prevent this problem, the authors introduce a dynamically
sized kernel stack that can be integrated into the standard Linux kernel. The well-known paging mecha-
nism is reused with some changes, in order to enable the kernel stack to grow.
introduction
The memory management architecture of IA-
32 machines uses a combination of segmentation
(memory areas) and paging to support a protected
multitasking environment (Intel, 1993). The x86
enforces the use of segmentation which provides
a mechanism of isolating individual code, data and
stack modules.
Therefore, Linux splits the memory address
space of a user process into multiple segments
and assigns a different protection mode for each of
them. Each segment contains a logical portion of a
process, e.g. the code of the process. Linux uses the
The management of virtual memory and the relation-
ship of software and hardware to this management
is an old research subject (Denning, 1970). In this
chapter we would like to focus on the kernel mode
stack. Our discussion will deal with the Linux
operating system running on an IA-32 architecture
machine. However, the proposed solutions may be
relevant for other platforms and operating systems
as well.
Search WWH ::




Custom Search