Papers
From Practical Software Verification
Add links to papers you have found useful or interesting here. Try to keep the subject area related to papers that are based on formal verification or to topics that might help in building a functional implementation. If you have time it would also be useful to fill out the template for the paper and provide as much information on as possible. That way we can hopefully minimise the amount of time people spend reading papers unrelated to what they are looking for. View the source of one of the existing articles and copy the template from there.
The table headings were picked fairly arbitrarily. If anyone can think of more informative headings then feel free to edit. The author heading is the primary paper author, I haven't bothered to include any others. List them on the paper description page if you want. The PoC field indicates whether a tool was created as part of the paper and the Released field indicates whether this tool was released publicly or not.
Fundamental theory and survey papers
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Formal verification at higher levels of abstraction | [1] | no | no | - | Kroening D | 2007 |
| A Survey of Automated Techniques for Formal Software Verification | [2] | no | no | - | D'Silva VJ | 2008 |
| Lecture notes on static analysis | [3] | no | no | - | Schwartzbach M | 2008 |
| Loop summarization using abstract transformers | [4] | yes | yes | yes | Kroening D | 2008 |
| A theory of type qualifiers (foundation for the Cqual and Cqual++ tools) | [5] | yes | yes | yes | Foster J | 1999 |
| Static Analysis Tool Exposition 2008 | [6] | no | no | - | NIST | 2008 |
Formal Program Specification
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Z Notation (a formal specification language based on logic and ZF set theory) | [7] [8] [9] | yes | yes | yes | ISO | 2002 |
| Guarded commands, non-determinacy and formal derivation of programs | [10] | yes | no | - | Dijkstra | 1975 |
Model Extraction and Checking; and Formal Program Specification
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Introduction to CMBC | [11] | yes | yes | yes | Kroening D | 2007 |
| Integrated Static Analysis for Linux Device Driver Verification (CBMC extension, similar to SLAM) | [12] | no | yes | no | Post H | 2007 |
| Counterexample-Guided Abstraction Refinement for Symbolic Model Checking | [13] | yes | no | no | Clarke E | 2003 |
| Symbolic model checking using SAT procedures instead of BDDs | [14] | yes | yes | no | Biere A | 1999 |
| Scalable and precise buffer overflow detection via Model Checking | [15] | no | yes | no | Chaki S | 2005 |
| Automated formal verification and testing of C programs for embedded systems | [16] | yes | yes | no | Kandl S | 2007 |
Decision procedures
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| A decision procedure for bit-vectors and arrays (STP) | [17] | yes | yes | yes | Ganesh V | 2007 |
| Deciding bit-vector arithmetic with abstraction (UCLID) | [18] | yes | yes | yes | Bryant R | 2007 |
| An extensible SAT solver (MiniSat) | [19] | yes | yes | yes | Eén N | 2003 |
| Existential heap abstraction entailment is undecidable | [20] | yes | yes | yes | Kuncak V | 2003 |
| Metamorphism, Formal Grammars and Undecidable Code Mutation | [21] | yes | yes | yes | Filiol E | 2007 |
| Hampi: A Solver For String Constraints | [22] | yes | yes | yes | Kiezun A | 2009 |
Bug hunting
Exploit Generation
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Automatic patch based exploit generation is possible: Techniques and implications | [39] | yes | yes | no | Brumley D | 2008 |
| Automated exploit development: The future of exploitation is here | [40] | no | yes | no | Medeiros J | 2007 |
| Automatic discovery of API level exploits | [41] | yes | yes | no | Ganapathy V | 2005 |
| Convicting exploitable software vulnerabilities: An efficient input provenance based approach | [42] | yes | yes | no | Zhiqiang L | 2008 |
| The Geometry of Innocent Flesh on the Bone: Return-into-libc without Function Calls (on the x86) | [43] | yes | yes | no | Shacham H | 2008 |
| Automating Mimicry Attacks Using Static Binary Analysis | [44] | yes | yes | no | Kruegel C | 2005 |
Intermediate Representations and Binary Instrumentation Frameworks
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| REIL: A platform-independent intermediate representation of disassembled code for static code analysis | [45] | no | yes | no | Dullien T | 2009 |
| VinE, project documentation | [46] | no | yes | no | Brumley D | 2007 |
| How the LLVM compiler infrastructure works (InformIT article) | [47] | no | yes | yes | Chisnall D | 2008 |
| Pin: Building customized program analysis tools with dynamic instrumentation | [48] | yes | yes | yes | Luk C | 2005 |
| Framework for Instruction-level Tracing and Analysis of Program Executions (Nirvana/iDNA) | [49] | yes | yes | no | Bhansali S | 2006 |
| BAP: The Next-Generation Binary Analysis Platform | [50] | no | yes | yes | Brumley D | 2009 |
Dataflow analysis
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software | [51] | yes | yes | no | Newsome J | 2006 |
| How to Shadow Every Byte of Memory Used by a Program | [52] | yes | yes | yes | Nethercote N | 2007 |
| Generalizing Data Flow Information | [53] | no | yes | yes | Skape | 2007 |
| Efficient fine-grained binary instrumentation with applications to taint-tracking | [54] | yes | yes | no | Saxena P | 2008 |
| Parallelizing security checks on commodity hardware | [55] | no | yes | no | Nightingale E | 2008 |
Other program analysis
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Creating vulnerability signatures using weakest preconditions | [56] | yes | yes | no | Brumley D | 2007 |
| Towards automatic generation of vulnerability based signatures | [57] | yes | yes | no | Brumley D | 2006 |
| Vulnerability-Specific Execution Filtering for Exploit Prevention on Commodity Software | [58] | yes | yes | no | Newsome J | 2008 |
| Replayer: Automatic protocol replay by binary analysis | [59] | no | yes | no | Newsome J | 2006 |
| Shape Analysis for Composite Data Structures | [60] | yes | yes | no | Josh Berdine | 2007 |
| Memalyze: Dynamic Analysis of Memory Access Behavior in Software | [61] | no | yes | yes | Skape | 2007 |
| Program Analysis as Constraint Solving | [62] | yes | yes | no | Gulwani S | 2008 |
| Digging for Data Structures | [63] | yes | no | no | Cozzie A | 2008 |
Other
| Title | Link | New theory | PoC | Released | Author | Year |
|---|---|---|---|---|---|---|
| Static disassembly of obfuscated binaries | [64] | yes | yes | no | Kruegel C | 2004 |
| Analysis-Resistant Malware | [65] | no | yes | yes | Bethencourt J | 2008 |

