该论文聚焦于Linux内核扩展程序eBPF的安全迁移问题。eBPF程序被广泛用于网络、可观测性及安全策略执行,但其内核验证器仅检查低级内存安全和终止性,未强制许多高级源级属性,如初始化规则、schema一致性或错误处理。作者识别出六类源级bug,这些bug能够通过编译和内核验证,但会导致数据静默损坏、将先前跟踪的事件泄露至用户空间,或产生错误的执行结果。其中,作者发现了十款开源eBPF程序中此前未报道的信息泄露:这些程序中的环形缓冲区或栈驻留事件记录会将完全可解码的先前跟踪事件(包括用户标识路径和足以恢复每个事件KASLR偏移的内核返回地址)泄露到用户空间。为加固这些被验证器接受的缺陷程序并支持安全迁移,作者提出了Heimdall——一个自动化流水线,利用大语言模型(LLM)将遗留的libbpf C程序翻译为基于Aya Rust的eBPF程序。Heimdall迭代修复编译和内核验证失败,通过静态分析安全引擎拒绝Rust-Aya中不安全的逃逸机制,并借助符号执行和Z3等价性检查逐程序证明翻译后程序与原始程序行为等价。在102个eBPF程序上的实验表明,Heimdall成功生成了96个经形式化验证等价(94.1%)的翻译版本。Heimdall是首个能够自动化地将生产级eBPF程序迁移到内存安全语言,并为每个翻译程序提供形式化保证保持可观测行为的系统。
💡 推荐理由: eBPF程序广泛应用于安全监控和网络,但其源级bug可能导致信息泄露或错误执行。Heimdall提供了一种自动化且经形式化验证的迁移方法,能从根本上消除此类漏洞,对提升内核安全基础设施的可靠性具有重要价值。
🎯 建议动作: 研究跟进:安全团队可评估Heimdall对自身eBPF程序的适用性,并关注其开源进展。