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