Yinggang Guo, Zicheng Wang, Weiheng Bai, Qingkai Zeng, Kangjie Lu
{"title":"BULKHEAD: Secure, Scalable, and Efficient Kernel Compartmentalization with PKS","authors":"Yinggang Guo, Zicheng Wang, Weiheng Bai, Qingkai Zeng, Kangjie Lu","doi":"arxiv-2409.09606","DOIUrl":null,"url":null,"abstract":"The endless stream of vulnerabilities urgently calls for principled\nmitigation to confine the effect of exploitation. However, the monolithic\narchitecture of commodity OS kernels, like the Linux kernel, allows an attacker\nto compromise the entire system by exploiting a vulnerability in any kernel\ncomponent. Kernel compartmentalization is a promising approach that follows the\nleast-privilege principle. However, existing mechanisms struggle with the\ntrade-off on security, scalability, and performance, given the challenges\nstemming from mutual untrustworthiness among numerous and complex components. In this paper, we present BULKHEAD, a secure, scalable, and efficient kernel\ncompartmentalization technique that offers bi-directional isolation for\nunlimited compartments. It leverages Intel's new hardware feature PKS to\nisolate data and code into mutually untrusted compartments and benefits from\nits fast compartment switching. With untrust in mind, BULKHEAD introduces a\nlightweight in-kernel monitor that enforces multiple important security\ninvariants, including data integrity, execute-only memory, and compartment\ninterface integrity. In addition, it provides a locality-aware two-level scheme\nthat scales to unlimited compartments. We implement a prototype system on Linux\nv6.1 to compartmentalize loadable kernel modules (LKMs). Extensive evaluation\nconfirms the effectiveness of our approach. As the system-wide impacts,\nBULKHEAD incurs an average performance overhead of 2.44% for real-world\napplications with 160 compartmentalized LKMs. While focusing on a specific\ncompartment, ApacheBench tests on ipv6 show an overhead of less than 2%.\nMoreover, the performance is almost unaffected by the number of compartments,\nwhich makes it highly scalable.","PeriodicalId":501333,"journal":{"name":"arXiv - CS - Operating Systems","volume":"46 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Operating Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2409.09606","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
The endless stream of vulnerabilities urgently calls for principled
mitigation to confine the effect of exploitation. However, the monolithic
architecture of commodity OS kernels, like the Linux kernel, allows an attacker
to compromise the entire system by exploiting a vulnerability in any kernel
component. Kernel compartmentalization is a promising approach that follows the
least-privilege principle. However, existing mechanisms struggle with the
trade-off on security, scalability, and performance, given the challenges
stemming from mutual untrustworthiness among numerous and complex components. In this paper, we present BULKHEAD, a secure, scalable, and efficient kernel
compartmentalization technique that offers bi-directional isolation for
unlimited compartments. It leverages Intel's new hardware feature PKS to
isolate data and code into mutually untrusted compartments and benefits from
its fast compartment switching. With untrust in mind, BULKHEAD introduces a
lightweight in-kernel monitor that enforces multiple important security
invariants, including data integrity, execute-only memory, and compartment
interface integrity. In addition, it provides a locality-aware two-level scheme
that scales to unlimited compartments. We implement a prototype system on Linux
v6.1 to compartmentalize loadable kernel modules (LKMs). Extensive evaluation
confirms the effectiveness of our approach. As the system-wide impacts,
BULKHEAD incurs an average performance overhead of 2.44% for real-world
applications with 160 compartmentalized LKMs. While focusing on a specific
compartment, ApacheBench tests on ipv6 show an overhead of less than 2%.
Moreover, the performance is almost unaffected by the number of compartments,
which makes it highly scalable.