Protecting C and C++ programs from code injection attacks

Project supervisors: Frank Piessens, Wouter Joosen

Researchers: Yves Younan

Implementation errors relating to memory-safety are the most common vulnerabilities used by attackers to gain control over the execution-flow of C and C++ applications. By carefully crafting an exploit for these vulnerabilities, attackers can make an application transfer execution-flow to code that they have injected. Such code injection attacks are among the most powerful and common attacks against software applications. 

This research track focuses on designing countermeasures for code injection attacks while modifying the core C language as little as possible. To this end changes can be made to the compiler, operating system or even machine architecture. An important goal is also to keep the performance and memory consumption penalties of countermeasures small.

The following papers describe two countermeasures that have been designed and implemented: