Reverse-Engineering Drivers for Safety and Portability

13 years 8 months ago
Reverse-Engineering Drivers for Safety and Portability
Device drivers today lack two important properties: guaranteed safety and cross-platform portability. We present an approach to incrementally achieving these properties in drivers, without requiring any changes in the drivers or operating system kernels. We describe RevEng, a tool for automatically reverse-engineering a binary driver and synthesizing a new, safe and portable driver that mimics the original one. The operating system kernel runs the trusted synthetic driver instead of the original, thus avoiding giving untrusted driver code kernel privileges. Initial results are promising: we reverseengineered the basic functionality of network drivers in Linux and Windows based solely on their binaries, and we synthesized safe drivers for Linux. We hope RevEng will eventually persuade hardware vendors to provide verifiable formal specifications instead of binary drivers; such specifications can be used to automatically synthesize safe drivers for every desired platform.
Vitaly Chipounov, George Candea
Added 02 Oct 2010
Updated 02 Oct 2010
Type Conference
Year 2008
Authors Vitaly Chipounov, George Candea
Comments (0)