Software exploitation has been proven to be a lucrative business for cybercriminals. Unfortunately, protecting software against attacks is a long-lasting endeavor that is still under active research. However, certain software-hardening schemes are already incorporated into current compilers and are actively used to make software exploitation a complicated procedure for the adversaries. Stack canaries are such a protection mechanism. Stack canaries aim to prevent control flow hijack by detecting corruption of a specific value on the program’s stack. Careful design and implementation of this conceptually straightforward mechanism is crucial to defeat stack-based control flow detours. In this paper, we examine 17 different stack canary implementations across multiple versions of the most popular operating systems running on various architectures. We systematically compare critical implementation details and introduce one new generic attack vector which allows bypassing stack canaries on current linux systems running up-to-date multi-threaded software altogether. We release an open-source framework (cookiecrumbler) that identifies the characteristics of stack canaries on any platform it is compiled on and we propose mitigation techniques against stack-based attacks. Although stack canaries may appear obsolete, we show that when they are used correctly, they can prevent intrusions which even the more sophisticated solutions may potentially fail to block.keywordsstack protectionstack canariesproposed mitigation techniquessafe stackthread control block (tcb)these keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
|Title of host publication
|Proceedings of the 33rd International Conference on ICT Systems Security and Privacy Protection (IFIP SEC)
|Published - 2018