Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits

Despite the fact that protection mechanisms like StackGuard, ASLR and NX are widespread, the development on new defense strategies against stack-based buffer overflows has not yet come to an end. In this article, we present a novel compiler-level protection called SCADS: Separated Control and Data S...

Full description

Bibliographic Details
Main Authors: Christopher Kugler, Tilo Müller
Format: Article
Language:English
Published: European Alliance for Innovation (EAI) 2015-10-01
Series:EAI Endorsed Transactions on Security and Safety
Subjects:
Online Access:http://eudl.eu/doi/10.4108/eai.5-10-2015.150477
_version_ 1819079436933267456
author Christopher Kugler
Tilo Müller
author_facet Christopher Kugler
Tilo Müller
author_sort Christopher Kugler
collection DOAJ
description Despite the fact that protection mechanisms like StackGuard, ASLR and NX are widespread, the development on new defense strategies against stack-based buffer overflows has not yet come to an end. In this article, we present a novel compiler-level protection called SCADS: Separated Control and Data Stacks that protects return addresses and saved frame pointers on a separate stack, called the control stack. In common computer programs, a single user mode stack is used to store control information next to data buffers. By separating control information from the data stack, we can protect sensitive pointers of a program’s control flow from being overwritten by buffer overflows. To substantiate the practicability of our approach, we provide SCADS as an open source patch for the LLVM compiler infrastructure. Focusing on Linux and FreeBSD running on the AMD64 architecture, we show compatibility, security and performance results. As we make control flow information simply unreachable for buffer overflows, many exploits are stopped at an early stage of progression with only negligible performance overhead.
first_indexed 2024-12-21T19:28:58Z
format Article
id doaj.art-a072ebdbb0d34d55b970b34add7b43a9
institution Directory Open Access Journal
issn 2032-9393
language English
last_indexed 2024-12-21T19:28:58Z
publishDate 2015-10-01
publisher European Alliance for Innovation (EAI)
record_format Article
series EAI Endorsed Transactions on Security and Safety
spelling doaj.art-a072ebdbb0d34d55b970b34add7b43a92022-12-21T18:52:45ZengEuropean Alliance for Innovation (EAI)EAI Endorsed Transactions on Security and Safety2032-93932015-10-012413410.4108/eai.5-10-2015.150477Separated Control and Data Stacks to Mitigate Buffer Overflow ExploitsChristopher Kugler0Tilo Müller1Department of Computer Science, Friedrich-Alexander-University of Erlangen-Nuremberg, GermanyDepartment of Computer Science, Friedrich-Alexander-University of Erlangen-Nuremberg, Germany; timuller@cs.fau.deDespite the fact that protection mechanisms like StackGuard, ASLR and NX are widespread, the development on new defense strategies against stack-based buffer overflows has not yet come to an end. In this article, we present a novel compiler-level protection called SCADS: Separated Control and Data Stacks that protects return addresses and saved frame pointers on a separate stack, called the control stack. In common computer programs, a single user mode stack is used to store control information next to data buffers. By separating control information from the data stack, we can protect sensitive pointers of a program’s control flow from being overwritten by buffer overflows. To substantiate the practicability of our approach, we provide SCADS as an open source patch for the LLVM compiler infrastructure. Focusing on Linux and FreeBSD running on the AMD64 architecture, we show compatibility, security and performance results. As we make control flow information simply unreachable for buffer overflows, many exploits are stopped at an early stage of progression with only negligible performance overhead.http://eudl.eu/doi/10.4108/eai.5-10-2015.150477Stack-based Buffer OverflowsLLVMSeparate Control Stack
spellingShingle Christopher Kugler
Tilo Müller
Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
EAI Endorsed Transactions on Security and Safety
Stack-based Buffer Overflows
LLVM
Separate Control Stack
title Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
title_full Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
title_fullStr Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
title_full_unstemmed Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
title_short Separated Control and Data Stacks to Mitigate Buffer Overflow Exploits
title_sort separated control and data stacks to mitigate buffer overflow exploits
topic Stack-based Buffer Overflows
LLVM
Separate Control Stack
url http://eudl.eu/doi/10.4108/eai.5-10-2015.150477
work_keys_str_mv AT christopherkugler separatedcontrolanddatastackstomitigatebufferoverflowexploits
AT tilomuller separatedcontrolanddatastackstomitigatebufferoverflowexploits