Title :
Continuous, Low Overhead, Run-Time Validation of Program Executions
Author :
Aktas, Erdem ; Afram, Furat ; Ghose, Kanad
Author_Institution :
Comput. Sci. Dept., State Univ. of New York at Binghamton, Binghamton, NY, USA
Abstract :
The construction of trustworthy systems demands that the execution of every piece of code is validated as genuine, that is, the executed codes do exactly what they are supposed to do. Pre-execution validations of code integrity fail to detect run time compromises like code injection, return and jump-oriented programming, and illegal dynamic linking of program modules. We propose and evaluate a generalized mechanism called REV (for Run-time Execution Validator) that can be easily integrated into a contemporary out-of-order processor to validate, as the program executes, the control flow path and instructions executed along the control flow path. To prevent memory from being tainted by compromised code, REV also prevents updates to the memory from a basic block until its execution has been authenticated. Although control flow signature based authentication of an execution has been suggested before for software testing and for restricted cases of embedded systems, their extensions to out-of-order cores is a non-incremental effort from a micro architectural standpoint. Unlike REV, the existing solutions do not scale with binary sizes, require binaries to be altered or require new ISA support and also fail to contain errors and, in general, impose a heavy performance penalty. We show, using a detailed cycle-accurate micro architectural simulator for an out-of-order pipeline implementing the X86 ISA that the performance overhead of REV is limited to 1.87% on the average across the SPEC 2006 benchmarks.
Keywords :
benchmark testing; program compilers; program testing; program verification; trusted computing; ISA support; REV; SPEC 2006 benchmarks; X86 ISA; code injection; contemporary out-of-order processor; control flow path; control flow signature based authentication; embedded systems; illegal dynamic program module linking; jump-oriented programming; microarchitectural standpoint; out-of-order cores; performance overhead; preexecution code integrity validations; program executions; return-oriented programming; run-time execution validator; run-time validation; software testing; trustworthy systems; Authentication; Cryptography; Hardware; Kernel; Out of order; Pipelines; Computer Security; Control-Flow Integrity; Control-Flow Validation; Hardware Security; Secure Execution; Trusted Computing;
Conference_Titel :
Microarchitecture (MICRO), 2014 47th Annual IEEE/ACM International Symposium on
Conference_Location :
Cambridge
DOI :
10.1109/MICRO.2014.18