Code injection in C and C++: A Survey of Vulnerabilities and Countermeasures
Authors: Yves Younan, Wouter Joosen and Frank Piessens
Published as: Technical Report CW386 by Departement Computerwetenschappen, Katholieke Universiteit Leuven
Date: July 2004
Abstract
Implementation errors relating to memory-safety are the most
common vulnerabilities used by attackers to gain control over the
execution-flow of an application. 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 report documents possible vulnerabilities in C and C++ ap-
plications that could lead to situations that allow for code injection
and describes the techniques generally used by attackers to exploit
them.
A fairly large number of defense techniques have been described
in literature. An important goal of this report is to give a comprehen-
sive survey of all available preventive and defensive countermeasures
that either attempt to eliminate specific vulnerabilities entirely or
attempt to combat their exploitation.
Finally, the report presents a synthesis of this survey that allows
the reader to weigh the advantages and disadvantages of using a
specific countermeasure as opposed to using another more easily.
| Attachment | Size |
|---|---|
| CW386.pdf | 709.08 KB |
