Control Jujutsu

Control flow integrity (CFI) has been proposed as an approach to defend against control-hijacking memory corruption attacks. CFI works by assigning tags to indirect branch targets statically and checking them at runtime. Coarse-grained enforcements of CFI that use a small number of tags to improve t...

Full description

Bibliographic Details
Main Authors: Evans, Isaac (Contributor), Long, Fan (Contributor), Otgonbaatar, Ulziibayar (Contributor), Shrobe, Howard E (Contributor), Rinard, Martin C (Contributor), Okhravi, Hamed (Contributor), Sidiroglou-Douskos, Stelios (Contributor)
Other Authors: Lincoln Laboratory (Contributor), Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory (Contributor), Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science (Contributor)
Format: Article
Language:English
Published: Association for Computing Machinery, 2018-02-22T21:23:24Z.
Subjects:
Online Access:Get fulltext
LEADER 02781 am a22003493u 4500
001 113878
042 |a dc 
100 1 0 |a Evans, Isaac  |e author 
100 1 0 |a Lincoln Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science  |e contributor 
100 1 0 |a Evans, Isaac  |e contributor 
100 1 0 |a Long, Fan  |e contributor 
100 1 0 |a Otgonbaatar, Ulziibayar  |e contributor 
100 1 0 |a Shrobe, Howard E  |e contributor 
100 1 0 |a Rinard, Martin C  |e contributor 
100 1 0 |a Okhravi, Hamed  |e contributor 
100 1 0 |a Sidiroglou-Douskos, Stelios  |e contributor 
700 1 0 |a Long, Fan  |e author 
700 1 0 |a Otgonbaatar, Ulziibayar  |e author 
700 1 0 |a Shrobe, Howard E  |e author 
700 1 0 |a Rinard, Martin C  |e author 
700 1 0 |a Okhravi, Hamed  |e author 
700 1 0 |a Sidiroglou-Douskos, Stelios  |e author 
245 0 0 |a Control Jujutsu 
260 |b Association for Computing Machinery,   |c 2018-02-22T21:23:24Z. 
856 |z Get fulltext  |u http://hdl.handle.net/1721.1/113878 
520 |a Control flow integrity (CFI) has been proposed as an approach to defend against control-hijacking memory corruption attacks. CFI works by assigning tags to indirect branch targets statically and checking them at runtime. Coarse-grained enforcements of CFI that use a small number of tags to improve the performance overhead have been shown to be ineffective. As a result, a number of recent efforts have focused on fine-grained enforcement of CFI as it was originally proposed. In this work, we show that even a fine-grained form of CFI with unlimited number of tags and a shadow stack (to check calls and returns) is ineffective in protecting against malicious attacks. We show that many popular code bases such as Apache and Nginx use coding practices that create flexibility in their intended control flow graph (CFG) even when a strong static analyzer is used to construct the CFG. These flexibilities allow an attacker to gain control of the execution while strictly adhering to a fine-grained CFI. We then construct two proof-of-concept exploits that attack an unlimited tag CFI system with a shadow stack. We also evaluate the difficulties of generating a precise CFG using scalable static analysis for real-world applications. Finally, we perform an analysis on a number of popular applications that highlights the availability of such attacks. 
520 |a United States. Defense Advanced Research Projects Agency (Grant FA8650-11-C-7192) 
546 |a en_US 
655 7 |a Article 
773 |t Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security - CCS '15