CFI: Control Flow Integrity or Control Flow Interruption?
Title | CFI: Control Flow Integrity or Control Flow Interruption? |
Publication Type | Conference Paper |
Year of Publication | 2019 |
Authors | Maunero, Nicoló, Prinetto, Paolo, Roascio, Gianluca |
Conference Name | 2019 IEEE East-West Design Test Symposium (EWDTS) |
Keywords | C++ languages, CFI solutions, CFI-based defenses, composability, computer security, Control Flow Integrity, control-flow integrity, corrupt code pointers, data execution prevention, data flow analysis, execution flow, famous attack paradigms, human factors, interrupt requests, Jump-Oriented Programming, Libraries, malicious code injection, modern Code Reuse Attacks, Monitoring, object-oriented programming, Payloads, Programming, pubcrawl, Resiliency, return oriented programming, return-oriented programming, rop attacks, Runtime, runtime attacks, runtime memory vulnerabilities, Scalability, security of data, target system |
Abstract | Runtime memory vulnerabilities, especially present in widely used languages as C and C++, are exploited by attackers to corrupt code pointers and hijack the execution flow of a program running on a target system to force it to behave abnormally. This is the principle of modern Code Reuse Attacks (CRAs) and of famous attack paradigms as Return-Oriented Programming (ROP) and Jump-Oriented Programming (JOP), which have defeated the previous defenses against malicious code injection such as Data Execution Prevention (DEP). Control-Flow Integrity (CFI) is a promising approach to protect against such runtime attacks. Recently, many CFI solutions have been proposed, with both hardware and software implementations. But how can a defense based on complying with a graph calculated a priori efficiently deal with something unpredictable as exceptions and interrupt requests? The present paper focuses on this dichotomy by analysing some of the CFI-based defenses and showing how the unexpected trigger of an interrupt and the sudden execution of an Interrupt Service Routine (ISR) can circumvent them. |
DOI | 10.1109/EWDTS.2019.8884464 |
Citation Key | maunero_cfi_2019 |
- return oriented programming
- malicious code injection
- modern Code Reuse Attacks
- Monitoring
- object-oriented programming
- Payloads
- programming
- pubcrawl
- Resiliency
- Libraries
- return-oriented programming
- Runtime
- runtime attacks
- runtime memory vulnerabilities
- Scalability
- security of data
- target system
- rop attacks
- Jump-Oriented Programming
- interrupt requests
- Human Factors
- famous attack paradigms
- execution flow
- data flow analysis
- data execution prevention
- corrupt code pointers
- control-flow integrity
- Control Flow Integrity
- computer security
- composability
- CFI-based defenses
- CFI solutions
- C++ languages