The Linux kernel's memory allocators from an exploitation perspective
[Posted January 3, 2012 by corbet]
"Argp" has posted
a
lengthy look at the kernel's memory allocators and how they can be
exploited to attack the system. "
The attack vector of corrupting
adjacent objects on the same slab is fully applicable to SLUB and largely
works like in the case of the SLAB allocator. However, in the case of SLUB
there is an added attack vector: exploiting the allocator’s metadata (the
ones responsible for finding the next free object on the slab). As twiz and
sgrakkyu have demonstrated in their book on kernel exploitation, the slab
can be misaligned by corrupting the least significant byte of the metadata
of a free object that hold the pointer to the next free object. This
misalignment of the slab allows us to create an in-slab fake object and by
doing so to a) satisfy safeguard checks as the one I explained in the
previous paragraph when they are used, and b) to hijack the kernel’s
execution flow to our own code."
(
Log in to post comments)