posted on 2007-01-01, 00:00authored byDavid Brumley, Hao Wang, Somesh Somesh, Dawn Song
Signature-based tools such as network intrusion detection
systems are widely used to protect critical systems. Automatic
signature generation techniques are needed to enable
these tools due to the speed at which new vulnerabilities
are discovered. In particular, we need automatic
techniques which generate sound signatures — signatures
which will not mistakenly block legitimate traffic or raise
false alarms. In addition, we need signatures to have few
false negatives and will catch many different exploit variants.
We investigate new techniques for automatically generating
sound vulnerability signatures with fewer false negatives
than previous research using program binary analysis.
The key problem to reducing false negatives is to consider
as many as possible different program paths an exploit may
take. Previous work considered each possible program path
an exploit may take separately, thus generating signatures
that are exponential in the size of the number of branches
considered. In the exact same scenario, we show how to
reduce the overall signature size and the generation time
from exponential to polynomial. We do this without requiring
any additional assumptions, or relaxing any properties.
This efficiency gain allows us to consider many more program
paths, which results in reducing the false negatives
of generated signatures. We achieve these results by creating
algorithms for generating vulnerability signatures that
are based on computing weakest preconditions (WP). The
weakest precondition for a program path to a vulnerability
is a function which matches all exploits that may exploit the
vulnerability along that path.
We have implemented our techniques and generated signatures
for several binary programs. Our results demonstrate
that our WP-based algorithm generates more succinct
signatures than previous approaches which were
based on forward symbolic execution.