Publication Type

Conference Proceeding Article

Version

publishedVersion

Publication Date

1-2017

Abstract

SafeStack, initially proposed as a key component of Code Pointer Integrity (CPI), separates the program stack into two distinct regions to provide a safe region for sensitive code pointers. SafeStack can prevent buffer overflow attacks that overwrite sensitive code pointers, e.g., return addresses, to hijack control flow of the program, and has been incorporated into the Clang project of LLVM as a C-based language front-end. In this paper, we propose and implement SafeStack+, an enhanced dual stack LLVM plug-in that further protects programs from data-flow hijacking. SafeStack+ locates data flow sensitive variables on the unsafe stack that could potentially affect evaluation of branching conditions, and adds canaries of random sizes and values to them to detect malicious overwriting. We implement SafeStack+ as a plug-in on LLVM 3.8 and perform extensive experiments to justify a lazy checking mechanism that adds on average 3.0% of runtime and 5.3% of memory overhead on top of SafeStack on SPEC CPU2006 benchmark programs. Our security analysis confirms that SafeStack+ is effective in detecting data-flow hijacking attacks.

Keywords

Buffer overflow, Data flow, Control flow

Discipline

Databases and Information Systems | Information Security

Research Areas

Cybersecurity

Publication

Information security and privacy: 22nd Australasian Conference, ACISP 2017, Auckland, New Zealand, July 3-5, Proceedings

First Page

95

Last Page

112

ISBN

9783319598703

Identifier

10.1007/978-3-319-59870-3_6

Publisher

Springer

City or Country

Cham

Additional URL

https://doi.org/10.1007/978-3-319-59870-3_6

Share

COinS