Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

David Brumley

dblp:40/2434 · DBLP profile ↗
← Back
45ranked-venue papers
13as first author
0since 2021 · last 2018
0000-0003-2233-3538ORCID · reported

Domains — the database's venue-derived domains; a paper can count in several

Security and privacy · 36 · 11 first-authorSoftware engineering, systems software and programming languages · 4 · 1 first-authorComputer networks · 3 · 1 first-authorSystems, architecture and hardware · 2Theory of computation · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Network and information security
31 papers
Systems and software security · 74% Malware analysis · 8% Digital forensics and information hiding · 6%
Software engineering, system software, and programming languages
22 papers
Program analysis · 41% Software testing · 38% Software maintenance and evolution · 10%
Theoretical computer science
3 papers
Automated reasoning and model checking · 92% Approximation and online algorithms · 5% Computational complexity · 3%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Cloud and datacenter computing · 54% Embedded and real-time systems · 41% Distributed systems · 5%

Topics — the 30 heaviest of 75, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Systems and software security
vulnerability discovery
0.972016
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware · NDSS 2016
Optimizing Seed Selection for Fuzzing · USENIX Security Symposium 2014
ReDeBug: Finding Unpatched Code Clones in Entire OS Distributions · IEEE Symposium on Security and Privacy 2012
Systems and software security
exploitation
0.762017
Your Exploit is Mine: Automatic Shellcode Transplant for Remote Exploits · IEEE Symposium on Security and Privacy 2017
Q: Exploit Hardening Made Easy · USENIX Security Symposium 2011
AEG: Automatic Exploit Generation · NDSS 2011
Software testing
fuzzing
0.632015
Program-Adaptive Mutational Fuzzing · IEEE Symposium on Security and Privacy 2015
Optimizing Seed Selection for Fuzzing · USENIX Security Symposium 2014
Scheduling black-box mutational fuzzing · CCS 2013
Program analysis
symbolic execution
0.632015
Program-Adaptive Mutational Fuzzing · IEEE Symposium on Security and Privacy 2015
Enhancing symbolic execution with veritesting · ICSE 2014
Unleashing Mayhem on Binary Code · IEEE Symposium on Security and Privacy 2012
Systems and software security
binary analysis
0.532014
Blanket Execution: Dynamic Similarity Testing for Program Binaries and Components · USENIX Security Symposium 2014
BYTEWEIGHT: Learning to Recognize Functions in Binary Code · USENIX Security Symposium 2014
Towards Automatic Discovery of Deviations in Binary Implementations with Applications to Error Detection and Fingerprint Generation · USENIX Security Symposium 2007
Cloud and datacenter computing › datacenter network
datacenter network management
0.312018
Cloud Datacenter SDN Monitoring: Experiences and Challenges · Internet Measurement Conference 2018
Automated reasoning and model checking › satisfiability modulo theories
DPLL(T)
0.312017
Scaling Up DPLL(T) String Solvers Using Context-Dependent Simplification · CAV (2) 2017
Automated reasoning and model checking
satisfiability modulo theories
0.312017
Scaling Up DPLL(T) String Solvers Using Context-Dependent Simplification · CAV (2) 2017
Automated reasoning and model checking › constraint solving
string constraint solving
0.312017
Scaling Up DPLL(T) String Solvers Using Context-Dependent Simplification · CAV (2) 2017
Systems and software security › firmware analysis
dynamic firmware analysis
0.212016
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware · NDSS 2016
Program analysis
binary analysis
0.222011
TIE: Principled Reverse Engineering of Types in Binary Programs · NDSS 2011
BAP: A Binary Analysis Platform · CAV 2011
Embedded and real-time systems
embedded system security
0.212016
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware · NDSS 2016
Software testing
test generation
0.222014
Enhancing symbolic execution with veritesting · ICSE 2014
All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask) · IEEE Symposium on Security and Privacy 2010
Digital forensics and information hiding › digital forensics
memory forensics
0.212015
Automatically deriving pointer reference expressions from binary code for memory dump analysis · ESEC/SIGSOFT FSE 2015
Program analysis › binary analysis
dynamic binary analysis
0.212015
Automatically deriving pointer reference expressions from binary code for memory dump analysis · ESEC/SIGSOFT FSE 2015
Program analysis › static analysis
pointer analysis
0.212015
Automatically deriving pointer reference expressions from binary code for memory dump analysis · ESEC/SIGSOFT FSE 2015
Systems and software security
memory safety
0.222012
Unleashing Mayhem on Binary Code · IEEE Symposium on Security and Privacy 2012
RICH: Automatically Protecting Against Integer-Based Vulnerabilities · NDSS 2007
Systems and software security › exploitation
automated exploit generation
0.222011
AEG: Automatic Exploit Generation · NDSS 2011
Automatic Patch-Based Exploit Generation is Possible: Techniques and Implications · SP 2008
Systems and software security › binary analysis
binary similarity
0.212014
Blanket Execution: Dynamic Similarity Testing for Program Binaries and Components · USENIX Security Symposium 2014
Systems and software security › binary analysis
function identification
0.212014
BYTEWEIGHT: Learning to Recognize Functions in Binary Code · USENIX Security Symposium 2014
Systems and software security › vulnerability discovery
fuzzing
0.212014
Optimizing Seed Selection for Fuzzing · USENIX Security Symposium 2014
Software testing
automated testing
0.212014
Enhancing symbolic execution with veritesting · ICSE 2014
Program analysis › symbolic execution
dynamic symbolic execution
0.212014
Enhancing symbolic execution with veritesting · ICSE 2014
Software testing
dynamic testing
0.212014
Blanket Execution: Dynamic Similarity Testing for Program Binaries and Components · USENIX Security Symposium 2014
Software testing › fuzzing › seed scheduling
seed selection
0.212014
Optimizing Seed Selection for Fuzzing · USENIX Security Symposium 2014
Systems and software security › software vulnerability
cryptographic API misuse
0.212013
An empirical study of cryptographic misuse in android applications · CCS 2013
Software testing › fuzzing
black-box fuzzing
0.212013
Scheduling black-box mutational fuzzing · CCS 2013
Compilers and program optimization
decompilation
0.212013
Native x86 Decompilation Using Semantics-Preserving Structural Analysis and Iterative Control-Flow Structuring · USENIX Security Symposium 2013
Software maintenance and evolution › software supply chain
software provenance
0.212013
Towards Automatic Software Lineage Inference · USENIX Security Symposium 2013
Program analysis
static analysis
0.212013
An empirical study of cryptographic misuse in android applications · CCS 2013

Methods — techniques the papers use, named apart from their topics

SDN telemetry · 0.7emulation · 0.5dynamic analysis · 0.5pointer reference expression extraction · 0.4dynamic binary analysis · 0.4optimization · 0.4dynamic similarity testing · 0.4symbolic tracing · 0.3shellcode layout remediation · 0.3path kneading · 0.3context-dependent simplification · 0.3white-box symbolic analysis · 0.2blackbox mutational fuzzing · 0.2static symbolic execution · 0.2machine learning · 0.2SMT solving · 0.2binary analysis · 0.2randomized online scheduling · 0.2
YearPublicationVenuePosition
2018 Cloud Datacenter SDN Monitoring: Experiences and Challenges
Deepak Bansal, David Brumley, Harish Kumar Chandrappa, Parag Sharma, Rishabh Tewari, Behnaz Arzani, Alex C. Snoeren
Internet Measurement Conference3
2017 Scaling Up DPLL(T) String Solvers Using Context-Dependent Simplification
Andrew Reynolds 0001, Maverick Woo, Clark W. Barrett, David Brumley, Cesare Tinelli
CAV (2)4
2017 How Shall We Play a Game?: A Game-theoretical Model for Cyber-warfare Games
abstract
Automated techniques and tools for finding, exploiting and patching vulnerabilities are maturing. In order to achieve an end goal such as winning a cyber-battle, these techniques and tools must be wielded strategically. Currently, strategy development in cyber - even with automated tools - is done manually, and is a bottleneck in practice. In this paper, we apply game theory toward the augmentation of the human decision-making process.,,Our work makes two novel contributions. First, previous work is limited by strong assumptions regarding the number of actors, actions, and choices in cyber-warfare. We develop a novel model of cyber-warfare that is more comprehensive than previous work, removing these limitations in the process. Second, we present an algorithm for calculating the optimal strategy of the players in our model. We show that our model is capable of finding better solutions than previous work within seconds, making computer-time strategic reasoning a reality. We also provide new insights, compared to previous models, on the impact of optimal strategies.
Tiffany Bao, Yan Shoshitaishvili, Ruoyu Wang 0001, Christopher Krügel, Giovanni Vigna, David Brumley
CSF6
2017 Your Exploit is Mine: Automatic Shellcode Transplant for Remote Exploits
abstract
Developing a remote exploit is not easy. It requires a comprehensive understanding of a vulnerability and delicate techniques to bypass defense mechanisms. As a result, attackers may prefer to reuse an existing exploit and make necessary changes over developing a new exploit from scratch. One such adaptation is the replacement of the original shellcode (i.e., the attacker-injected code that is executed as the final step of the exploit) in the original exploit with a replacement shellcode, resulting in a modified exploit that carries out the actions desired by the attacker as opposed to the original exploit author. We call this a shellcode transplant. Current automated shellcode placement methods are insufficient because they over-constrain the replacement shellcode, and so cannot be used to achieve shellcode transplant. For example, these systems consider the shellcode as an integrated memory chunk and require that the execution path of the modified exploit must be same as the original one. To resolve these issues, we present ShellSwap, a system that uses symbolic tracing, with a combination of shellcode layout remediation and path kneading to achieve shellcode transplant. We evaluated the ShellSwap system on a combination of 20 exploits and 5 pieces of shellcode that are independently developed and different from the original exploit. Among the 100 test cases, our system successfully generated 88% of the exploits.
Tiffany Bao, Ruoyu Wang 0001, Yan Shoshitaishvili, David Brumley
IEEE Symposium on Security and Privacy4
2016 Towards Automated Dynamic Analysis for Linux-based Embedded Firmware
Daming D. Chen, Maverick Woo, David Brumley, Manuel Egele
NDSS3
2015 Automatically deriving pointer reference expressions from binary code for memory dump analysis
abstract
Given a crash dump or a kernel memory snapshot, it is often desirable to have a capability that can traverse its pointers to locate the root cause of the crash, or check their integrity to detect the control flow hijacks. To achieve this, one key challenge lies in how to locate where the pointers are. While locating a pointer usually requires the data structure knowledge of the corresponding program, an important advance made by this work is that we show a technique of extracting address-independent data reference expressions for pointers through dynamic binary analysis. This novel pointer reference expression encodes how a pointer is accessed through the combination of a base address (usually a global variable) with certain offset and further pointer dereferences. We have applied our techniques to OS kernels, and our experimental results with a number of real world kernel malware show that we can correctly identify the hijacked kernel function pointers by locating them using the extracted pointer reference expressions when only given a memory snapshot.
Yangchun Fu, Zhiqiang Lin 0001, David Brumley
ESEC/SIGSOFT FSE3
2015 Program-Adaptive Mutational Fuzzing
abstract
We present the design of an algorithm to maximize the number of bugs found for black-box mutational fuzzing given a program and a seed input. The major intuition is to leverage white-box symbolic analysis on an execution trace for a given program-seed pair to detect dependencies among the bit positions of an input, and then use this dependency relation to compute a probabilistically optimal mutation ratio for this program-seed pair. Our result is promising: we found an average of 38.6% more bugs than three previous fuzzers over 8 applications using the same amount of fuzzing time.
Sang Kil Cha, Maverick Woo, David Brumley
IEEE Symposium on Security and Privacy3
2014 Enhancing symbolic execution with veritesting
abstract
We present MergePoint, a new binary-only symbolic execution system for large-scale and fully unassisted testing of commodity off-the-shelf (COTS) software. MergePoint introduces veritesting, a new technique that employs static symbolic execution to amplify the effect of dynamic symbolic execution. Veritesting allows MergePoint to find twice as many bugs, explore orders of magnitude more paths, and achieve higher code coverage than previous dynamic symbolic execution systems. MergePoint is currently running daily on a 100 node cluster analyzing 33,248 Linux binaries; has generated more than 15 billion SMT queries, 200 million test cases, 2,347,420 crashes, and found 11,687 bugs in 4,379 distinct applications.
Thanassis Avgerinos, Alexandre Rebert, Sang Kil Cha, David Brumley
ICSE4
2014 BYTEWEIGHT: Learning to Recognize Functions in Binary Code
Tiffany Bao, Jonathan Burket, Maverick Woo, Rafael Turner, David Brumley
USENIX Security Symposium5
2014 Blanket Execution: Dynamic Similarity Testing for Program Binaries and Components
Manuel Egele, Maverick Woo, Peter Chapman, David Brumley
USENIX Security Symposium4
2014 Optimizing Seed Selection for Fuzzing
Alexandre Rebert, Sang Kil Cha, Thanassis Avgerinos, Jonathan Foote, David Warren, Gustavo Grieco, David Brumley
USENIX Security Symposium7
2013 An empirical study of cryptographic misuse in android applications
abstract
Developers use cryptographic APIs in Android with the intent of securing data such as passwords and personal information on mobile devices. In this paper, we ask whether developers use the cryptographic APIs in a fashion that provides typical cryptographic notions of security, e.g., IND-CPA security. We develop program analysis techniques to automatically check programs on the Google Play marketplace, and find that 10.327 out of 11,748 applications that use cryptographic APIs -- 88% overall -- make at least one mistake. These numbers show that applications do not use cryptographic APIs in a fashion that maximizes overall security. We then suggest specific remediations based on our analysis towards improving overall cryptographic security in Android applications.
Manuel Egele, David Brumley, Yanick Fratantonio, Christopher Krügel
CCS2
2013 Scheduling black-box mutational fuzzing
abstract
Black-box mutational fuzzing is a simple yet effective technique to find bugs in software. Given a set of program-seed pairs, we ask how to schedule the fuzzings of these pairs in order to maximize the number of unique bugs found at any point in time. We develop an analytic framework using a mathematical model of black-box mutational fuzzing and use it to evaluate 26 existing and new randomized online scheduling algorithms. Our experiments show that one of our new scheduling algorithms outperforms the multi-armed bandit algorithm in the current version of the CERT Basic Fuzzing Framework (BFF) by finding 1.5x more unique bugs in the same amount of time.
Maverick Woo, Sang Kil Cha, Samantha Gottlieb, David Brumley
CCS4
2013 Automatically Inferring the Evolution of Malicious Activity on the Internet
Shobha Venkataraman, David Brumley, Subhabrata Sen, Oliver Spatscheck
NDSS2
2013 Native x86 Decompilation Using Semantics-Preserving Structural Analysis and Iterative Control-Flow Structuring
David Brumley, JongHyup Lee, Edward J. Schwartz, Maverick Woo
USENIX Security Symposium1
2013 Towards Automatic Software Lineage Inference
Jiyong Jang, Maverick Woo, David Brumley
USENIX Security Symposium3
2012 GPS software attacks
abstract
Since its creation, the Global Positioning System (GPS) has grown from a limited purpose positioning system to a ubiquitous trusted source for positioning, navigation, and timing data. To date, researchers have essentially taken a signal processing approach to GPS security and shown that GPS is vulnerable to jamming and spoofing.
Tyler Nighswander, Brent M. Ledvina, Jonathan Diamond, Robert Brumley, David Brumley
CCS5
2012 Unleashing Mayhem on Binary Code
abstract
In this paper we present Mayhem, a new system for automatically finding exploitable bugs in binary (i.e., executable) programs. Every bug reported by Mayhem is accompanied by a working shell-spawning exploit. The working exploits ensure soundness and that each bug report is security-critical and actionable. Mayhem works on raw binary code without debugging information. To make exploit generation possible at the binary-level, Mayhem addresses two major technical challenges: actively managing execution paths without exhausting memory, and reasoning about symbolic memory indices, where a load or a store address depends on user input. To this end, we propose two novel techniques: 1) hybrid symbolic execution for combining online and offline (concolic) execution to maximize the benefits of both techniques, and 2) index-based memory modeling, a technique that allows Mayhem to efficiently reason about symbolic memory at the binary level. We used Mayhem to find and demonstrate 29 exploitable vulnerabilities in both Linux and Windows programs, 2 of which were previously undocumented.
Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert, David Brumley
IEEE Symposium on Security and Privacy4
2012 ReDeBug: Finding Unpatched Code Clones in Entire OS Distributions
abstract
Programmers should never fix the same bug twice. Unfortunately this often happens when patches to buggy code are not propagated to all code clones. Unpatched code clones represent latent bugs, and for security-critical problems, latent vulnerabilities, thus are important to detect quickly. In this paper we present ReDeBug, a system for quickly finding unpatched code clones in OS-distribution scale code bases. While there has been previous work on code clone detection, ReDeBug represents a unique design point that uses a quick, syntax-based approach that scales to OS distribution-sized code bases that include code written in many different languages. Compared to previous approaches, ReDeBug may find fewer code clones, but gains scale, speed, reduces the false detection rate, and is language agnostic. We evaluated ReDeBug by checking all code from all packages in the Debian Lenny/Squeeze, Ubuntu Maverick/Oneiric, all Source Forge C and C++ projects, and the Linux kernel for unpatched code clones. ReDeBug processed over 2.1 billion lines of code at 700,000 LoC/min to build a source code database, then found 15,546 unpatched copies of known vulnerable code in currently deployed code by checking 376 Debian/Ubuntu security-related patches in 8 minutes on a commodity desktop machine. We show the real world impact of ReDeBug by confirming 145 real bugs in the latest version of Debian Squeeze packages.
Jiyong Jang, Abeer Agrawal, David Brumley
IEEE Symposium on Security and Privacy3
2012 Tachyon: Tandem Execution for Efficient Live Patch Testing
Matthew Maurer, David Brumley
USENIX Security Symposium2
2011 BAP: A Binary Analysis Platform
David Brumley, Ivan Jager, Thanassis Avgerinos, Edward J. Schwartz
CAV1
2011 BitShred: feature hashing malware for scalable triage and semantic analysis
abstract
The sheer volume of new malware found each day is growing at an exponential pace. This growth has created a need for automatic malware triage techniques that determine what malware is similar, what malware is unique, and why. In this paper, we present BitShred, a system for large-scale malware similarity analysis and clustering, and for automatically uncovering semantic inter- and intra-family relationships within clusters. The key idea behind BitShred is using feature hashing to dramatically reduce the high-dimensional feature spaces that are common in malware analysis. Feature hashing also allows us to mine correlated features between malware families and samples using co-clustering techniques. Our evaluation shows that BitShred speeds up typical malware triage tasks by up to 2,365x and uses up to 82x less memory on a single CPU, all with comparable accuracy to previous approaches. We also develop a parallelized version of BitShred, and demonstrate scalability within the Hadoop framework.
Jiyong Jang, David Brumley, Shobha Venkataraman
CCS2
2011 AEG: Automatic Exploit Generation
Thanassis Avgerinos, Sang Kil Cha, Brent Lim Tze Hao, David Brumley
NDSS4
2011 TIE: Principled Reverse Engineering of Types in Binary Programs
JongHyup Lee, Thanassis Avgerinos, David Brumley
NDSS3
2011 Q: Exploit Hardening Made Easy
Edward J. Schwartz, Thanassis Avgerinos, David Brumley
USENIX Security Symposium3
2010 Platform-independent programs
abstract
Given a single program (i.e., bit string), one may assume that the program's behaviors can be determined by first identifying the native runtime architecture and then executing the program on that architecture. In this paper, we challenge the notion that programs run on a single architecture by developing techniques that automatically create a single program string that a) runs on different architectures, and b) potentially has different behaviors depending upon which architecture it runs on. At a high level, a primary security implication is that any program analysis done on a program must only be considered valid for the assumed architecture. Our techniques also introduce a new type of steganography that hides execution behaviors. In order to demonstrate our techniques, we implement a system for generating platform-independent programs for x86, ARM, and MIPS. We use our system to generate real platform-independent programs.
Sang Kil Cha, Brian Pak, David Brumley, Richard J. Lipton
CCS3
2010 Contractual Anonymity
Edward J. Schwartz, David Brumley, Jonathan M. McCune
NDSS2
2010 SplitScreen: Enabling Efficient, Distributed Malware Detection
Sang Kil Cha, Iulian Moraru, Jiyong Jang, John Truelove, David Brumley, David G. Andersen
NSDI5
2010 All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)
abstract
Dynamic taint analysis and forward symbolic execution are quickly becoming staple techniques in security analyses. Example applications of dynamic taint analysis and forward symbolic execution include malware analysis, input filter generation, test case generation, and vulnerability discovery. Despite the widespread usage of these two techniques, there has been little effort to formally define the algorithms and summarize the critical issues that arise when these techniques are used in typical security contexts. The contributions of this paper are two-fold. First, we precisely describe the algorithms for dynamic taint analysis and forward symbolic execution as extensions to the run-time semantics of a general language. Second, we highlight important implementation choices, common pitfalls, and considerations when using these techniques in a security context.
Edward J. Schwartz, Thanassis Avgerinos, David Brumley
IEEE Symposium on Security and Privacy3
2008 Automatic Patch-Based Exploit Generation is Possible: Techniques and Implications
abstract
The automatic patch-based exploit generation problem is: given a program P and a patched version of the program P', automatically generate an exploit for the potentially unknown vulnerability present in P but fixed in P'. In this paper, we propose techniques for automatic patch-based exploit generation, and show that our techniques can automatically generate exploits for 5 Microsoft programs based upon patches provided via Windows Update. Although our techniques may not work in all cases, a fundamental tenant of security is to conservatively estimate the capabilities of attackers. Thus, our results indicate that automatic patch-based exploit generation should be considered practical. One important security implication of our results is that current patch distribution schemes which stagger patch distribution over long time periods, such as Windows Update, may allow attackers who receive the patch first to compromise the significant fraction of vulnerable hosts who have not yet received the patch.
David Brumley, Pongsin Poosankam, Dawn Song, Jiang Zheng 0002
SP1
2008 Theory and Techniques for Automatic Generation of Vulnerability-Based Signatures
abstract
In this paper, we explore the problem of creating \emph{vulnerability signatures}. A vulnerability signature is based on a program vulnerability, and is not specific to any particular exploit. The advantage of vulnerability signatures is that their quality can be guaranteed. In particular, we create vulnerability signatures which are guaranteed to have zero false positives. We show how to automate signature creation for any vulnerability that can be detected by a runtime monitor. We provide a formal definition of a vulnerability signature, and investigate the computational complexity of creating and matching vulnerability signatures. We systematically explore the design space of vulnerability signatures. We also provide specific techniques for creating vulnerability signatures in a variety of language classes. In order to demonstrate our techniques, we have built a prototype system. Our experiments show that we can, using a single exploit, automatically generate a vulnerability signature as a regular expression, as a small program, or as a system of constraints. We demonstrate techniques for creating signatures of vulnerabilities which can be exploited via multiple program paths. Our results indicate that our approach is a viable option for signature generation, especially when guarantees are desired.
David Brumley, James Newsome, Dawn Song, Hao Wang 0112, Somesh Jha
IEEE Trans. Dependable Secur. Comput.1
2007 Creating Vulnerability Signatures Using Weakest Preconditions
abstract
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.
David Brumley, Hao Wang 0112, Somesh Jha, Dawn Song
CSF1
2007 Sweeper: a lightweight end-to-end system for defending against fast worms
abstract
The vulnerabilities that plague computers cause endless grief to users. Slammer compromised millions of hosts in minutes; a hit-list worm would take under a second. Recently proposed techniques respond better than manual approaches, but require expensive instrumentation, which limits deployment. Although spreading "antibodies" (e.g. signatures) ameliorates this limitation, hosts depending on antibodies are defenseless until inoculation; to the fastest hit-list worms this delay is crucial. Additionally, most recently proposed techniques cannot provide recovery to provide continuous service after an attack.
Joseph A. Tucek, James Newsome, Shan Lu 0001, Chengdu Huang, Spiros Xanthos, David Brumley, Yuanyuan Zhou 0001, Dawn Song
EuroSys6
2007 Generic Application-Level Protocol Analyzer and its Language
Nikita Borisov, David Brumley, Helen J. Wang, John Dunagan, Pallavi Joshi, Chuanxiong Guo
NDSS2
2007 RICH: Automatically Protecting Against Integer-Based Vulnerabilities
David Brumley, Dawn Song, Tzi-cker Chiueh, Rob Johnson 0001, Huijia Lin
NDSS1
2007 Towards Automatic Discovery of Deviations in Binary Implementations with Applications to Error Detection and Fingerprint Generation
David Brumley, Juan Caballero, Zhenkai Liang, James Newsome
USENIX Security Symposium1
2006 Design space and analysis of worm defense strategies
abstract
We give the first systematic investigation of the design space of worm defense system strategies. We accomplish this by providing a taxonomy of defense strategies by abstracting away implementation-dependent and approach-specific details and concentrating on the fundamental properties of each defense category. Our taxonomy and analysis reveals the key parameters for each strategy that determine its effectiveness. We provide a theoretical foundation for understanding how these parameters interact, as well as simulation-based analysis of how these strategies compare as worm defense systems. Finally, we offer recommendations based upon our taxonomy and analysis on which worm defense strategies are most likely to succeed. In particular, we show that a hybrid approach combining Proactive Protection and Reactive Antibody Defense is the most promising approach and can be effective even against the fastest worms such as hitlist worms. Thus, we are the first to demonstrate with theoretic and empirical models which defense strategies will work against the fastest worms such as hitlist worms.
David Brumley, Li-Hao Liu, Pongsin Poosankam, Dawn Song
AsiaCCS1
2006 Replayer: automatic protocol replay by binary analysis
abstract
We address the problem of replaying an application dialog between two hosts. The ability to accurately replay application dialogs is useful in many security-oriented applications, such as replaying an exploit for forensic analysis or demonstrating an exploit to a third party.A central challenge in application dialog replay is that the dialog intended for the original host will likely not be accepted by another without modification. For example, the dialog may include or rely on state specific to the original host such as its hostname, a known cookie, etc. In such cases, a straight-forward byte-by-byte replay to a different host with a different state (e.g., different hostname) than the original observed dialog participant will likely fail. These state-dependent protocol fields must be updated to reflect the different state of the different host for replay to succeed.We formally define the replay problem. We present a solution which makes novel use of program verification techniques such as theorem proving and weakest pre-condition. By employing these techniques, we create the first sound solution to the replay problem: replay succeeds whenever our approach yields an answer. Previous techniques, though useful, are based on unsound heuristics. We implement a prototype of our techniques called Replayer, which we use to demonstrate the viability of our approach.
James Newsome, David Brumley, Jason Franklin, Dawn Song
CCS2
2006 Vulnerability-Specific Execution Filtering for Exploit Prevention on Commodity Software
James Newsome, David Brumley, Dawn Song
NDSS2
2006 Towards Automatic Generation of Vulnerability-Based Signatures
abstract
In this paper we explore the problem of creating vulnerability signatures. A vulnerability signature matches all exploits of a given vulnerability, even polymorphic or metamorphic variants. Our work departs from previous approaches by focusing on the semantics of the program and vulnerability exercised by a sample exploit instead of the semantics or syntax of the exploit itself. We show the semantics of a vulnerability define a language which contains all and only those inputs that exploit the vulnerability. A vulnerability signature is a representation (e.g., a regular expression) of the vulnerability language. Unlike exploit-based signatures whose error rate can only be empirically measured for known test cases, the quality of a vulnerability signature can be formally quantified for all possible inputs. We provide a formal definition of a vulnerability signature and investigate the computational complexity of creating and matching vulnerability signatures. We also systematically explore the design space of vulnerability signatures. We identify three central issues in vulnerability-signature creation: how a vulnerability signature represents the set of inputs that may exercise a vulnerability, the vulnerability coverage (i.e., number of vulnerable program paths) that is subject to our analysis during signature creation, and how a vulnerability signature is then created for a given representation and coverage. We propose new data-flow analysis and novel adoption of existing techniques such as constraint solving for automatically generating vulnerability signatures. We have built a prototype system to test our techniques. Our experiments show that we can automatically generate a vulnerability signature using a single exploit which is of much higher quality than previous exploit-based signatures. In addition, our techniques have several other security applications, and thus may be of independent interest.
David Brumley, James Newsome, Dawn Song, Hao Wang 0112, Somesh Jha
S&P1
2006 Towards Attack-Agnostic Defenses
David Brumley, Dawn Song
HotSec1
2005 Remote timing attacks are practical
David Brumley, Dan Boneh
Comput. Networks1
2004 Privtrans: Automatically Partitioning Programs for Privilege Separation
David Brumley, Dawn Song
USENIX Security Symposium1
2003 Virtual Appliances for Deploying and Maintaining Software
Constantine P. Sapuntzakis, David Brumley, Ramesh Chandra, Nickolai Zeldovich, Jim Chow, Monica S. Lam, Mendel Rosenblum
LISA2
2003 Remote Timing Attacks Are Practical
David Brumley, Dan Boneh
USENIX Security Symposium1