Author :
Hiser, J. ; Nguyen-Tuong, A. ; Co, Michele ; Hall, Mathew ; Davidson, Jack W.
Author_Institution :
Dept. of Comput. Sci., Univ. of Virginia, Charlottesville, VA, USA
Abstract :
Through randomization of the memory space and the confinement of code to non-data pages, computer security researchers have made a wide range of attacks against program binaries more difficult. However, attacks have evolved to exploit weaknesses in these defenses. To thwart these attacks, we introduce a novel technique called Instruction Location Randomization (ILR). Conceptually, ILR randomizes the location of every instruction in a program, thwarting an attacker´s ability to re-use program functionality (e.g., arc-injection attacks and return-oriented programming attacks). ILR operates on arbitrary executable programs, requires no compiler support, and requires no user interaction. Thus, it can be automatically applied post-deployment, allowing easy and frequent re-randomization. Our preliminary prototype, working on 32-bit x86 Linux ELF binaries, provides a high degree of entropy. Individual instructions are randomly placed within a 31-bit address space. Thus, attacks that rely on a priori knowledge of the location of code or derandomization are not feasible. We demonstrated ILR´s defensive capabilities by defeating attacks against programs with vulnerabilities, including Adobe´s PDF viewer, acroread, which had an in-the-wild vulnerability. Additionally, using an industry-standard CPU performance benchmark suite, we compared the run time of prototype ILR-protected executables to that of native executables. The average run-time overhead of ILR was 13% with more than half the programs having effectively no overhead (15 out of 29), indicating that ILR is a realistic and cost-effective mitigation technique.
Keywords :
Linux; security of data; Linux ELF binary; arbitrary executable program; average run-time overhead; code confinement; computer security researcher; cost-effective mitigation technique; derandomization; entropy; in-the-wild vulnerability; industry-standard CPU performance benchmark suite; instruction location randomization; memory space; native executable; nondata page; program binary; program functionality; prototype ILR-protected executable; rerandomization; Engines; Layout; Linux; Program processors; Prototypes; Security; Virtual machining; ASLR; Diversity; Exploit prevention; Randomization; Return-oriented-programming; arc-injection;