3 月 22 日消息,科技媒体 phoronix 昨日(3 月 21 日)发布博文,报道称微软向 Linux 内核社区提交了新的开源贡献-- Hornet,这是一个用于验证 eBPF 程序签名的 Linux 安全模块(LSM)。
注:eBPF 全称 Extended Berkeley Packet Filter,是一种在 Linux 内核中运行程序的技术。在无需修改内核源代码或加载内核模块的情况下,eBPF 支持开发者在 Runtime 安全、高效地扩展内核功能。
微软长期以来一直是 eBPF 技术的积极推动者,该技术能够在 Linux 内核中安全高效地运行定制程序。Hornet 的推出标志着微软在 eBPF 领域的进一步深耕,旨在提升 eBPF 程序的安全性。
Hornet 采用与内核模块类似的签名验证机制。具体来说,它会在可执行文件的末尾附加一个 pkcs#7 签名。在调用 bpf_prog_load 时,Hornet 会从当前任务的可执行文件中提取签名,并利用该签名验证传入内核的 bpf 指令和映射的完整性。
此外,Hornet 默认信任从内核内部加载的程序,而非用户空间的程序。这一设计让 BPF_PRELOAD 程序和 BPF_SYSCALL 程序能顺利输出。Hornet 还支持轻量级加载器和静态生成程序,确保所有在内核中运行的代码都经过签名验证。
除了 Hornet LSM 模块,微软还提议在 Linux 内核源码树中引入一个新的工具 ——sign-ebpf,用于签名 eBPF 程序。开发者可以通过查看 RFC 补丁系列了解 Hornet LSM 的详细实例。