Counterfeit Object-oriented Programming: On the Difficulty of Preventing Code Reuse Attacks in C++ Applications
By Felix Schuster, Thomas Tendyck, Christopher Liebchen, Lucas Davi, Ahmad-Reza Sadeghi, Thorsten Holz. IEEE Symposium on Security and Privacy, 2015
429 citations recorded by the source corpus.
Code reuse attacks such as return-oriented programming (ROP) have become prevalent techniques to exploit memory corruption vulnerabilities in software programs. A variety of corresponding defenses has been proposed, of which some have already been successfully bypassed -- and the arms race continues. In this paper, we perform a systematic assessment of recently proposed CFI solutions and other defenses against code reuse attacks in the context of C++. We demonstrate that many of these defenses that do not consider object-oriented C++ semantics precisely can be generically bypassed in practice. Our novel attack technique, denoted as counterfeit object-oriented programming (COOP), induces malicious program behavior by only invoking chains of existing C++ virtual functions in a program through corresponding existing call sites. COOP is Turing complete in realistic attack scenarios and we show its viability by developing sophisticated, real-world exploits for Internet Explorer 10 on Windows and Fire fox 36 on Linux. Moreover, we show that even recently proposed defenses (CPS, T-VIP, vfGuard, and VTint) that specifically target C++ are vulnerable to COOP. We observe that constructing defenses resilient to COOP that do not require access to source code seems to be challenging. We believe that our investigation and results are helpful contributions to the design and implementation of future defenses against control flow hijacking attacks.
Subfields: Artificial Intelligence, Materials Chemistry, Signal Processing
View Paper: https://www.semanticscholar.org/paper/7a42159634f95ba5dc54eaf5beaf3f02ea74d6db
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Artificial Intelligence
In Materials Chemistry
In Signal Processing
- Ahmad-Reza Sadeghi
- Lucas Davi
- R. Sekar
- Zhenkai Liang
- Prateek Saxena
- Per Larsen
- Dawn Song
- Michael Franz
Citations in the corpus
- Control-Flow Integrity (2017, background): “COOP shows that an attacker can construct counterfeit objects and, by reusing existing vtables, perform arbitrary computations.”
- C-FLAT: Control-Flow Attestation for Embedded Systems Software (2016, methodology): “For instance, the counterfeit object-oriented programming (COOP) [36] exploitation technique abuses a loop gadget to invoke a chain of C++ virtual methods.”
- The Cybersecurity Landscape in Industrial Control Systems (2016, background): “[108] have demonstrated that code-reuse attacks based on only calling a chain of virtual methods allow arbitrary malicious program actions.”
- Code-pointer integrity (2014, methodology): “The abundance of virtual table pointers in most C++ programs gives an attacker sufficient freedom to induce malicious program behavior by only chaining existing virtual functions through corresponding existing call sites [Schuster et al. 2015].”
- Data-Oriented Programming: On the Expressiveness of Non-control Data Attacks (2016, background): “ROP technique and its variants have been extensively explored recently [1]–[5], [23], [61], [62].”