MOAT:面向安全的 BPF 内核扩展
密码学与安全
2024-06-10 v3 操作系统
摘要
Linux 内核广泛使用伯克利包过滤器(Berkeley Packet Filter, BPF)以允许用户编写的 BPF 应用程序在内核空间执行。BPF 采用验证器静态检查用户提供的 BPF 代码的安全性。近期的攻击表明,BPF 程序可规避安全检查并获取对内核内存的未授权访问,说明验证过程并非无懈可击。本文提出 MOAT,一个利用英特尔内存保护密钥(Intel Memory Protection Keys, MPK)隔离潜在恶意 BPF 程序的系统。使用 MPK 强制实施 BPF 程序隔离并非易事;MOAT 旨在缓解技术障碍,例如有限的硬件密钥以及需要保护种类繁多的 BPF 辅助函数。我们在 Linux(版本 6.1.38)上实现 MOAT,评估表明 MOAT 在主流通用场景下以低成本隔离 BPF 程序,例如隔离一个 BPF 包过滤器仅带来 3% 的吞吐量损失。
引用
@article{arxiv.2301.13421,
title = {MOAT: Towards Safe BPF Kernel Extension},
author = {Hongyi Lu and Shuai Wang and Yechang Wu and Wanning He and Fengwei Zhang},
journal= {arXiv preprint arXiv:2301.13421},
year = {2024}
}