Safe and usable kernel extensions with Rex

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Jia, Jinghao, Qin, Ruowen, Craun, Milo, Lukiyanov, Egor, Bansal, Ayush, Le, Michael V., Franke, Hubertus, Jamjoom, Hani, Xu, Tianyin, Williams, Dan
Format: Preprint
Veröffentlicht: 2025
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866909595393327104
author Jia, Jinghao
Qin, Ruowen
Craun, Milo
Lukiyanov, Egor
Bansal, Ayush
Le, Michael V.
Franke, Hubertus
Jamjoom, Hani
Xu, Tianyin
Williams, Dan
author_facet Jia, Jinghao
Qin, Ruowen
Craun, Milo
Lukiyanov, Egor
Bansal, Ayush
Le, Michael V.
Franke, Hubertus
Jamjoom, Hani
Xu, Tianyin
Williams, Dan
contents 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, along with a lightweight extralingual runtime for properties that are unsuitable for static analysis, including safe exception handling, stack safety, and termination. With Rex, kernel extensions are written in safe Rust and interact with the kernel via a safe interface provided by Rex's kernel crate. No separate static verification is needed. Rex addresses usability issues of eBPF kernel extensions without compromising performance.
format Preprint
id arxiv_https___arxiv_org_abs_2502_18832
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Safe and usable kernel extensions with Rex
Jia, Jinghao
Qin, Ruowen
Craun, Milo
Lukiyanov, Egor
Bansal, Ayush
Le, Michael V.
Franke, Hubertus
Jamjoom, Hani
Xu, Tianyin
Williams, Dan
Operating Systems
Programming Languages
D.4.5
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, along with a lightweight extralingual runtime for properties that are unsuitable for static analysis, including safe exception handling, stack safety, and termination. With Rex, kernel extensions are written in safe Rust and interact with the kernel via a safe interface provided by Rex's kernel crate. No separate static verification is needed. Rex addresses usability issues of eBPF kernel extensions without compromising performance.
title Safe and usable kernel extensions with Rex
topic Operating Systems
Programming Languages
D.4.5
url https://arxiv.org/abs/2502.18832