DocumentCode :
724647
Title :
Missing the Point(er): On the Effectiveness of Code Pointer Integrity
Author :
Evans, Isaac ; Fingeret, Sam ; Gonzalez, Julian ; Otgonbaatar, Ulziibayar ; Tang, Tiffany ; Shrobe, Howard ; Sidiroglou-Douskos, Stelios ; Rinard, Martin ; Okhravi, Hamed
Author_Institution :
MIT CSAIL, Cambridge, MA, USA
fYear :
2015
fDate :
17-21 May 2015
Firstpage :
781
Lastpage :
796
Abstract :
Memory corruption attacks continue to be a major vector of attack for compromising modern systems. Numerous defenses have been proposed against memory corruption attacks, but they all have their limitations and weaknesses. Stronger defenses such as complete memory safety for legacy languages (C/C++) incur a large overhead, while weaker ones such as practical control flow integrity have been shown to be ineffective. A recent technique called code pointer integrity (CPI) promises to balance security and performance by focusing memory safety on code pointers thus preventing most control-hijacking attacks while maintaining low overhead. CPI protects access to code pointers by storing them in a safe region that is protected by instruction level isolation. On x86-32, this isolation is enforced by hardware, on x86-64 and ARM, isolation is enforced by information hiding. We show that, for architectures that do not support segmentation in which CPI relies on information hiding, CPI´s safe region can be leaked and then maliciously modified by using data pointer overwrites. We implement a proof-of-concept exploit against Nginx and successfully bypass CPI implementations that rely on information hiding in 6 seconds with 13 observed crashes. We also present an attack that generates no crashes and is able to bypass CPI in 98 hours. Our attack demonstrates the importance of adequately protecting secrets in security mechanisms and the dangers of relying on difficulty of guessing without guaranteeing the absence of memory leaks.
Keywords :
data protection; security of data; ARM; C-C++; CPI safe region; code pointer integrity effectiveness; code pointer protection; control flow integrity; control-hijacking attacks; data pointer overwrites; information hiding; instruction level isolation; legacy languages; memory corruption attacks; memory safety; security mechanisms; time 98 hour; Computer crashes; Delays; Libraries; Safety; Security;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Security and Privacy (SP), 2015 IEEE Symposium on
Conference_Location :
San Jose, CA
ISSN :
1081-6011
Type :
conf
DOI :
10.1109/SP.2015.53
Filename :
7163060
Link To Document :
بازگشت