Bouncer: securing software by blocking bad input
- Manuel Costa ,
- Miguel Castro ,
- Lidong Zhou ,
- Lintao Zhang ,
- Marcus Peinado
ACM Symposium on Operating Systems Principles (SOSP) |
Published by Association for Computing Machinery, Inc.
Attackers exploit software vulnerabilities to control or crash
programs. Bouncer uses existing software instrumentation
techniques to detect attacks and it generates filters auto-
matically to block exploits of the target vulnerabilities. The
filters are deployed automatically by instrumenting system
calls to drop exploit messages. These filters introduce low
overhead and they allow programs to keep running correctly
under attack. Previous work computes filters using symbolic
execution along the path taken by a sample exploit, but at-
tackers can bypass these filters by generating exploits that
follow a different execution path. Bouncer introduces three
techniques to generalize filters so that they are harder to
bypass: a new form of program slicing that uses a combina-
tion of static and dynamic analysis to remove unnecessary
conditions from the filter; symbolic summaries for common
library functions that characterize their behavior succinctly
as a set of conditions on the input; and generation of alterna-
tive exploits guided by symbolic execution. Bouncer filters
have low overhead, they do not have false positives by de-
sign, and our results show that Bouncer can generate filters
that block all exploits of some real-world vulnerabilities.
Copyright © 2007 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or permissions@acm.org. The definitive version of this paper can be found at ACM's Digital Library --http://www.acm.org/dl/.