Exploring Static and Dynamic Safety for Safe, Expressive, and Fast Kernel Extensions

dc.contributor.authorLukiyanov, Egor Maximovichen
dc.contributor.committeechairWilliams, Daniel Johnen
dc.contributor.committeememberButt, Alien
dc.contributor.committeememberBack, Godmar Volkeren
dc.contributor.departmentComputer Science and#38; Applicationsen
dc.date.accessioned2026-06-12T08:03:24Zen
dc.date.available2026-06-12T08:03:24Zen
dc.date.issued2026-06-11en
dc.description.abstractKernel extensions allow for flexibility in operating systems. The expressiveness of extensions that can be written is limited by requirements of safety and performance. In eBPF, a Linux kernel extension framework, an in-kernel verifier statically upholds extension safety, while a dynamically checked kernel interface enables expressiveness otherwise prohibited by the verifier. In this work, we explore the benefits and limitations of this hybrid safety model. We find that the eBPF interface has gaps in its safety and a lack of expressiveness. To address these limitations, we introduce termination to eBPF to guarantee a bound on program runtime safety, and we identify a fundamental language-verifier gap which compromises eBPF expressiveness. We evaluate the proposed termination mechanism and Rex's approach to closing the language-verifier gap, finding that both reflect different tradeoffs in safety, performance, and expressiveness while improving over the original eBPF framework.en
dc.description.abstractgeneralOperating systems manage computer resources such as memory, processors and storage. In server production environments, customizing the operating system is important for performance and observability. Kernel extensions allow dynamic customization of the operating system without needing to modify its code and restarting the system. Critically, systems such as eBPF, a Linux kernel extension framework, guarantee a dynamically loaded extensions cannot crash the operating system and will not slow won the machine. However, in this work we find that the eBPF interface has gaps in its safety and a lack of expressiveness. To address these problems, we explore two alternative designs. The first adds a termination mechanism to eBPF, which can stop programs that run for too long and guarantee their runtime safety. The second identifies a fundamental language-verifier gap in eBPF and shows how this gap limits expressiveness in the eBPF framework. The results have contributed to Rex, a larger project on Rust-based kernel extensions. We evaluate the proposed termination mechanism and Rex's approach to closing the language-verifier gap, finding that both reflect different tradeoffs among safety, performance, and expressiveness while improving over the original eBPF framework.en
dc.description.degreeMaster of Scienceen
dc.format.mediumETDen
dc.identifier.othervt_gsexam:47336en
dc.identifier.urihttps://hdl.handle.net/10919/143376en
dc.language.isoenen
dc.publisherVirginia Techen
dc.rightsCreative Commons Attribution 4.0 Internationalen
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/en
dc.subjecteBPFen
dc.subjectLinuxen
dc.subjectKernel Extensionsen
dc.subjectExpressivenessen
dc.subjectTerminationen
dc.titleExploring Static and Dynamic Safety for Safe, Expressive, and Fast Kernel Extensionsen
dc.typeThesisen
thesis.degree.disciplineComputer Science & Applicationsen
thesis.degree.grantorVirginia Polytechnic Institute and State Universityen
thesis.degree.levelmastersen
thesis.degree.nameMaster of Scienceen

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Lukiyanov_EM_T_2026.pdf
Size:
1.32 MB
Format:
Adobe Portable Document Format

Collections