There is safety in numbers: preventing control-flow hijacking by duplication

  • Authors:
  • Job Noorman;Nick Nikiforakis;Frank Piessens

  • Affiliations:
  • IBBT-DistriNet, KU Leuven, Heverlee, Belgium;IBBT-DistriNet, KU Leuven, Heverlee, Belgium;IBBT-DistriNet, KU Leuven, Heverlee, Belgium

  • Venue:
  • NordSec'12 Proceedings of the 17th Nordic conference on Secure IT Systems
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Despite the large number of proposed countermeasures against control-flow hijacking attacks, these attacks still pose a great threat for today's applications. The problem with existing solutions is that they either provide incomplete probabilistic protection (e.g., stack canaries) or impose a high runtime overhead (e.g., bounds checking). In this paper, we show how the concept of program-part duplication can be used to protect against control-flow hijacking attacks and present two different instantiations of the duplication concept which protect against popular attack vectors. First, we use the duplication of functions to eliminate the need of return addresses and thus provide complete protection against attacks targeting a function's return address. Then we demonstrate how the integrity of function pointers can be protected through the use of data duplication. We test the combined effectiveness of our two methods and experimentally show that they provide an almost complete protection against control-flow hijacking attacks with only a low runtime overhead in real-world applications.