170 likes | 335 Views
Branch Regulation: Low-Overhead Protection from Code Reuse Attacks. Branch Regulation: Low-Overhead Protection from Code Reuse Attacks in Proceedings of the 39th annual international symposium on Computer architecture (ISCA ’12), June 2012. Authors:
E N D
Branch Regulation:Low-Overhead Protection from Code Reuse Attacks
Branch Regulation: Low-Overhead Protection from Code Reuse Attacks in Proceedings of the 39th annual international symposium on Computer architecture (ISCA ’12), June 2012. Authors: Mehmet Kayaalp, Meltem Ozsoy, Nael Abu-Ghazaleh and Dmitry Ponomarev Department of Computer Science State University of New York at Binghamton fmkayaalp, mozsoy, nael, dimag@cs.binghamton.edu Paper Information
Abstract • While software based full control flow integrity (CFI) checking can protect against CRAs(Code Reuse Attacks), it includes significant overhead • We propose branch regulation (BR), a lightweight hardware-supported protection mechanism against the CRAs that addresses all limitations of software CFI
Background Knowledge :ROP (Return-Oriented Programming) attack • One of the most commonCRA. • So, The attacker should identify gadgets, which are sequences of instructions in the victim program (including any linked in libraries, ex> libc, libm) that end with a return.
Background Knowledge :ROP (Return-Oriented Programming) attack
Background Knowledge :JOP (JUMP-Oriented Programming) attack • A New Class of Code-Reuse Attack • Thwarts certain Anti-ROP defences (Anti-ROP defenses check only stack pointer value ) • JOP used statements ending with Indirect Jump Call • Instead of stack uses a dispatcher table to jump to different locations • No known defenses against ROP prevent JOP attacks, there is a critical need for techniques that prevent JOP attacks with low overhead.
Background Knowledge : CFI (Control Flow Integrity) This is powerful defense solution mechanism • Control-Flow Integrity (CFI) • Execution of a program dynamically follows only certain paths, in accordance with a static policy (a Control-Flow Graph) • Dynamic checks & machine code rewriting • Control-Flow Graph (CFG) • defined by analysis ahead of time • source code analysis, binary analysis, execution profiling Enforcing full CFI at the branch level should completely protect from ROP and JOP attacks but CFI shows 22% performance loss for a larger set of benchmarks from SPEC 2006 suite
Branch Regulation (BR) • A technique that defends against CRAs by enforcing simple control flow invariants present in function-based programming languages. • By providing simple hardware • BR works by enforcing 3 rules (RET, Indirect JMP, CALL)
Branch Regulation (BR) – Enforcing BR Rules Unintended Branches
Branch Regulation (BR) – Why Hardware ? for performance (binary size and execution time) More importantly for security reasons Unintended branch will not appear in the CFG and will not be checked by the software CFI implementation
BR Implementation Details - Architectural Support for BR • BR checks are performed in hardware.
Performance Evaluation of BR (1) Look inside
Performance Evaluation of BR (2) Look inside
Conclusion • In this paper, we presented Branch Regulation (BR), a new low-overhead defense mechanism against Code Reuse Attacks (CRAs). • BR limits the target addresses of branches to be either within the same function or at the start of another function • It reduce the ability of the attacker to find exploitable gadgets needed for the CRA with small overhead (2% performance loss, about 1% binary size increase)