Static Binary Rewriting to Improve Software Security, Safety and Reliability
Hawkins, William, Computer Science - School of Engineering and Applied Science, University of Virginia
Davidson, Jack, Department of Computer Science, University of Virginia
The notion that software runs the modern world is generally accepted. Humans interact with software to most conduct of the tasks in their day-to-day lives: they talk to friends and family on smart phones, make purchases on the Internet and follow their GPS device to get from the airport to the hotel when they travel. However, it is when people rely on software without realizing it that the stakes are the highest. Today, software controls the power grid, dams, airplanes, cars, surgery, the economy, national defense and so on.
Disruption of safety-critical systems, whether caused by the malicious activity of an attacker, the nature of the complexity of the system, operator error, etc., can cost humans their lives or their livelihoods. For this reason, the security, safety and reliability of the software that run these systems is of the utmost importance. The public would greatly benefit from a general tool that can be used to improve their security, safety and reliability.
There are a number of reasons, though, such a tool is difficult to find, much less build. First, such a tool must operate on software without access to its source code or metadata, known as software of unknown provenance (SOUP). Second, such a tool must be able to rewrite software that operates on a variety of platforms. Third, the tool must provide the system designer the flexibility to design imaginative security and reliability improvements without restriction. Fourth, the architecture and algorithms of the static binary rewriter must produce transformed, rewritten programs that adhere to a variety of performance parameters.
The design, architecture and algorithms of the retargetable, static binary rewriter presented in this dissertation give system designers the power to apply post hoc transformations that improve the security and reliability of SOUP. The evaluation presented in this dissertation demonstrate that statically rewritten SOUP exhibits no excessive size and performance overhead with respect to the original program/library. Finally, this dissertation presents the results of three case studies that demonstrate the utility of the design and architecture of the static binary rewriter to allow third party developers to build transformations that add security and reliability to potentially vulnerable software.
PHD (Doctor of Philosophy)
binary rewriter, software security, software reliability