Publication Type

Conference Paper

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 | Data Storage Systems

Research Areas

Cybersecurity

Publication

Australasian Conference on Information Security and Privacy: 22nd Australasian Conference, ACISP 2017, Auckland, New Zealand, July 3–5, 2017, Proceedings, Part II

Identifier

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

Publisher

SAGE

City or Country

Auckland

Creative Commons License

Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.

Additional URL

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

Share

COinS