Verifying Device Drivers with Pancake
Authors:
Junming Zhao,
Miki Tanaka,
Johannes Åman Pohjola,
Alessandro Legnani,
Tiana Tsang Ung,
H. Truong,
Tsun Wang Sau,
Thomas Sewell,
Rob Sison,
Hira Syeda,
Magnus Myreen,
Michael Norrish,
Gernot Heiser
Abstract:
Device driver bugs are the leading cause of OS compromises, and their formal verification is therefore highly desirable. To the best of our knowledge, no realistic and performant driver has been verified for a non-trivial device. We propose Pancake, an imperative language for systems programming that features a well-defined and verification-friendly semantics. Leveraging the verified compiler back…
▽ More
Device driver bugs are the leading cause of OS compromises, and their formal verification is therefore highly desirable. To the best of our knowledge, no realistic and performant driver has been verified for a non-trivial device. We propose Pancake, an imperative language for systems programming that features a well-defined and verification-friendly semantics. Leveraging the verified compiler backend of the CakeML functional language, we develop a compiler for Pancake that guarantees that the binary retains the semantics of the source code. Usng automatic translation of Pancake to the Viper SMT front-end, we verify a performant driver for an Ethernet NIC.
△ Less
Submitted 29 May, 2025; v1 submitted 14 January, 2025;
originally announced January 2025.