Christian Wimmer

Run-Time Defense against Code Injection Attacks using Replicated Execution

Babak Salamat, Todd Jackson, Gregor Wagner, Christian Wimmer, Michael Franz: Run-Time Defense against Code Injection Attacks using Replicated Execution. In IEEE Transactions on Dependable and Secure Computing, volume 8, issue 4, pages 588–601. IEEE Computer Society, 2011. doi:10.1109/TDSC.2011.18

Download preprint as PDF

Abstract

The number and complexity of attacks on computer systems are increasing. This growth necessitates proper defense mechanisms. Intrusion detection systems play an important role in detecting and disrupting attacks before they can compromise software. Multi-variant execution is an intrusion detection mechanism that executes several slightly different versions, called variants, of the same program in lockstep. The variants are built to have identical behavior under normal execution conditions. However, when the variants are under attack, there are detectable differences in their execution behavior. At run time, a monitor compares the behavior of the variants at certain synchronization points and raises an alarm when a discrepancy is detected.

We present a monitoring mechanism that does not need any kernel privileges to supervise the variants. Many sources of inconsistencies, including asynchronous signals and scheduling of multi-threaded or multi-process applications, can cause divergence in behavior of variants. These divergences cause false alarms. We provide solutions to remove these false alarms.

Our experiments show that the multi-variant execution technique is effective in detecting and preventing code injection attacks. The empirical results demonstrate that dual-variant execution has on average 17% performance overhead when deployed on multi-core processors.