Control-Flow Integrity: Attacks and Protections

Despite the intense efforts to prevent programmers from writing code with memory errors, memory corruption vulnerabilities are still a major security threat. Consequently, control-flow integrity has received significant attention in the research community, and software developers to combat control c...

Full description

Bibliographic Details
Main Authors: Sarwar Sayeed, Hector Marco-Gisbert, Ismael Ripoll, Miriam Birch
Format: Article
Language:English
Published: MDPI AG 2019-10-01
Series:Applied Sciences
Subjects:
Online Access:https://www.mdpi.com/2076-3417/9/20/4229
id doaj-3988d3dd333747ca8fdd75289a7954d5
record_format Article
spelling doaj-3988d3dd333747ca8fdd75289a7954d52020-11-25T01:47:21ZengMDPI AGApplied Sciences2076-34172019-10-01920422910.3390/app9204229app9204229Control-Flow Integrity: Attacks and ProtectionsSarwar Sayeed0Hector Marco-Gisbert1Ismael Ripoll2Miriam Birch3School of Computing, Engineering and Physical Sciences, University of the West of Scotland, High Street, Paisley PA1 2BE, UKSchool of Computing, Engineering and Physical Sciences, University of the West of Scotland, High Street, Paisley PA1 2BE, UKDepartment of Computing Engineering, Universitat Politècnica de València, Camino de Vera s/n, 46022 Valencia, SpainSchool of Computing, Engineering and Physical Sciences, University of the West of Scotland, High Street, Paisley PA1 2BE, UKDespite the intense efforts to prevent programmers from writing code with memory errors, memory corruption vulnerabilities are still a major security threat. Consequently, control-flow integrity has received significant attention in the research community, and software developers to combat control code execution attacks in the presence of type of faults. Control-flow Integrity (CFI) is a large family of techniques that aims to eradicate memory error exploitation by ensuring that the instruction pointer (IP) of a running process cannot be controlled by a malicious attacker. In this paper, we assess the effectiveness of 14 CFI techniques against the most popular exploitation techniques, including code reuse attacks, return-to-user, return-to-libc, and replay attacks. We also classify these techniques based on their security, robustness, and implementation complexity. Our study indicates that the majority of the CFI techniques are primarily focused on restricting indirect branch instructions and cannot prevent all forms of vulnerability exploitation. We conclude that the performance overhead introduced, jointly with the partial attack coverage, is discouraging the industry from adopting most of them.https://www.mdpi.com/2076-3417/9/20/4229cfi protectionscfi attacksmemory errorssecurityexploitation
collection DOAJ
language English
format Article
sources DOAJ
author Sarwar Sayeed
Hector Marco-Gisbert
Ismael Ripoll
Miriam Birch
spellingShingle Sarwar Sayeed
Hector Marco-Gisbert
Ismael Ripoll
Miriam Birch
Control-Flow Integrity: Attacks and Protections
Applied Sciences
cfi protections
cfi attacks
memory errors
security
exploitation
author_facet Sarwar Sayeed
Hector Marco-Gisbert
Ismael Ripoll
Miriam Birch
author_sort Sarwar Sayeed
title Control-Flow Integrity: Attacks and Protections
title_short Control-Flow Integrity: Attacks and Protections
title_full Control-Flow Integrity: Attacks and Protections
title_fullStr Control-Flow Integrity: Attacks and Protections
title_full_unstemmed Control-Flow Integrity: Attacks and Protections
title_sort control-flow integrity: attacks and protections
publisher MDPI AG
series Applied Sciences
issn 2076-3417
publishDate 2019-10-01
description Despite the intense efforts to prevent programmers from writing code with memory errors, memory corruption vulnerabilities are still a major security threat. Consequently, control-flow integrity has received significant attention in the research community, and software developers to combat control code execution attacks in the presence of type of faults. Control-flow Integrity (CFI) is a large family of techniques that aims to eradicate memory error exploitation by ensuring that the instruction pointer (IP) of a running process cannot be controlled by a malicious attacker. In this paper, we assess the effectiveness of 14 CFI techniques against the most popular exploitation techniques, including code reuse attacks, return-to-user, return-to-libc, and replay attacks. We also classify these techniques based on their security, robustness, and implementation complexity. Our study indicates that the majority of the CFI techniques are primarily focused on restricting indirect branch instructions and cannot prevent all forms of vulnerability exploitation. We conclude that the performance overhead introduced, jointly with the partial attack coverage, is discouraging the industry from adopting most of them.
topic cfi protections
cfi attacks
memory errors
security
exploitation
url https://www.mdpi.com/2076-3417/9/20/4229
work_keys_str_mv AT sarwarsayeed controlflowintegrityattacksandprotections
AT hectormarcogisbert controlflowintegrityattacksandprotections
AT ismaelripoll controlflowintegrityattacksandprotections
AT miriambirch controlflowintegrityattacksandprotections
_version_ 1725014802143641600