Safe and usable kernel extensions with Rex
Jinghao Jia, Ruowen Qin, Milo Craun, Egor Lukiyanov, Ayush Bansal,, Michael V. Le, Hubertus Franke, Hani Jamjoom, Tianyin Xu, Dan Williams

TL;DR
Rex is a new framework for kernel extensions that uses safe Rust and a lightweight runtime to improve safety and usability, addressing limitations of existing mechanisms like eBPF without sacrificing performance.
Contribution
Rex introduces a language-based safety framework for kernel extensions that eliminates the need for static verification, enhancing usability and safety in kernel programming.
Findings
Rex enables writing kernel extensions in safe Rust with no static verification.
It improves usability by closing the language-verifier gap.
Rex maintains performance comparable to existing mechanisms.
Abstract
Safe kernel extensions have gained significant traction, evolving from simple packet filters to large, complex programs that customize storage, networking, and scheduling. Existing kernel extension mechanisms like eBPF rely on in-kernel verifiers to ensure safety of kernel extensions by static verification using symbolic execution. We identify significant usability issues -- safe extensions being rejected by the verifier -- due to the language-verifier gap, a mismatch between developers' expectation of program safety provided by a contract with the programming language, and the verifier's expectation. We present Rex, a new kernel extension framework that closes the language-verifier gap and improves the usability of kernel extensions in terms of programming experience and maintainability. Rex builds upon language-based safety to provide safety properties desired by kernel extensions,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSecurity and Verification in Computing · Logic, programming, and type systems · Parallel Computing and Optimization Techniques
