π€ AI Summary
This work addresses the inefficiency and security risks associated with manually crafting configuration code when operating systems are frequently adapted to emerging memory hardware. It presents the first application of domain-specific software synthesis to the generation of operating system memory management code. By leveraging high-level formal specifications that capture both the memory hardwareβs mapping behavior and the OS execution environment, the approach automatically synthesizes verifiable low-level code along with corresponding hardware components. This methodology substantially improves development productivity and system security, enables seamless porting of operating systems to novel hardware platforms, and provides a robust and efficient implementation foundation for exploring new address translation mechanisms.
π Abstract
Security is among the top concerns of operating system (OS) developers. A secure runtime environment relies on the OS to correctly configure the memory hardware on which it runs. This is mission-critical as it provides essential security-relevant features and abstractions that ensure the integrity and isolation of untrusted applications running alongside each other. Configuring a platform's memory hardware is not a one-off effort as designers constantly develop new mechanisms for translation and protection with different features and means of configuration. Adapting the OS code to the new hardware is not only a manual, repetitive and time consuming task, it may also introduce subtle, but security critical bugs that break security and isolation guarantees.
We present Velosiraptor, a system that automatically generates correct, low-level OS code that programs the memory hardware of a machine. Velosiraptor leverages software synthesis techniques and exploits the domain specificity of the problem to make the synthesis process efficient. With Velosiraptor, developers write only a high-level description of the memory hardware's mapping behavior and OS environment.
The Velosiraptor toolchain transforms this specification into a verified implementation that can be linked directly with the rest of the operating system. Incorporating the OS environment into this process allows porting an OS to new hardware platforms without worrying about writing code to configure the memory hardware. We can also use the same specification to generate hardware components. This enables research in new translation mechanisms, freeing up OS developers from manually writing OS code.