Whereas user-facing applications are often written in modern languages, the firmware, operating system, support libraries, and virtual machines that underpin just about any modern computer system are still written in low-level languages that value flexibility and performance over convenience and safety. Programming errors in low-level code are often exploitable and can, in the worst case, give adversaries unfettered access to the compromised host system.
This book provides an introduction to and overview of automatic software diversity techniques that, in one way or another, use randomization to greatly increase the difficulty of exploiting the vast amounts of low-level code in existence. Diversity-based defenses are motivated by the observation that a single attack will fail against multiple targets with unique attack surfaces. We introduce the many, often complementary, ways that one can diversify attack surfaces and provide an accessible guide to more than two decades worth of research on the topic. We also discuss techniques used in conjunction with diversity to prevent accidental disclosure of randomized program aspects and present an in-depth case study of one of our own diversification solutions.
Table of Contents
Attacking and Defending
What to Diversify
When to Diversify
Case Study: Compile-time Diversification
Information Leakage Resilience
About the Author(s)Per Larsen
, Immunant, Inc.
Per Larsen recently decided to try his luck as an entrepreneur and currently leads an information security startup: Immunant, Inc. Previously, he worked four years as a postdoctoral scholar at the University of California, Irvine. He graduated with a Ph.D. from the Technical University of Denmark in 2011. He enjoys caffeinated beverages and staying up very late.Stefan Brunthaler
, SBA Research (Vienna, Austria)
Stefan Brunthaler received a Dr.techn. with distinction from TU Vienna in 2011 and spent the next four years as postdoctoral scholar at the University of California, Irvine. Currently, he is a key researcher at SBA Research in Vienna, Austria, working on various topics in language-based security.Lucas Davi
, Intel Collaborative Research Institute for Secure Computing
Lucas Davi is a researcher at the Intel Collaborative Research Institute for Secure Computing (ICRI-SC) at Technische Universitat Darmstadt, Germany. He received his Ph.D. from Technische Universitat Darmstadt, Germany, in computer science, focusing on code-reuse attacks and defenses. His research focuses on exploits such as return-oriented programming (ROP) for diverse processor architectures. He is working on new attack methods and countermeasures against exploits such as control-flow integrity and software diversity.Ahmad-Reza Sadeghi
, Technische Universitat Darmstadt (Germany)
Ahmad-Reza Sadeghi is a full professor of Computer Science at Technische Universitat Darmstadt, Germany. He is the head of the System Security Lab at the Center for Advanced Security Research Darmstadt (CASED) and the Director of the Intel Collaborative Research Institute for Secure Computing (ICRI-SC) at TU Darmstadt. He holds a Ph.D. in Computer Science from the University of Saarland in Saarbrucken, Germany. Prior to academia, he worked in Research and Development of Telecommunications enterprises, amongst others Ericsson Telecommunications.Michael Franz
, Secure Systems and Software Laboratory (UC Irvine)