eBPF 是一项可在特权上下文中运行沙箱程序的革命性技术,广泛应用于 Linux 内核网络监控、Windows 拒绝服务防护以及区块链智能合约执行等场景。然而,eBPF 实现中的缺陷可能造成广泛而严重的影响。以往研究主要关注 eBPF 运行时(runtime)的内存安全性,很少能检测实现缺陷(即实现是否正确);且现有实现缺陷检测方法多聚焦于验证器(verifier)中的漏洞,忽略了解释器(interpreter)和 JIT 编译器等其他组件。本文提出 BpfChecker,一个基于差分模糊测试(differential fuzzing)的框架,用于检测 eBPF 运行时的实现缺陷。该方法以 eBPF 程序为输入,在不同 eBPF 运行时的关键状态间执行差分测试,从而发现实现不一致。为增强生成程序的语义,作者设计了一种轻量级中间表示,并在错误消息指导下进行约束变异。作者实现了 BpfChecker 原型,并在三个 eBPF 运行时(Solana rBPF、vanilla rBPF、Windows eBPF)上进行了广泛评估。结果表明,共发现 28 个新的实现缺陷,获得 2 个 CVE 编号以及约 800,000 美元漏洞奖励,并得到开发者致谢。更重要的是,其中 2 个新发现的缺陷能够导致 Solana 网络执行层出现分歧(divergence),威胁共识一致性。该工作表明差分模糊测试在揭示跨运行时语义差异方面非常有效,也为针对 eBPF 生态的漏洞挖掘提供了新思路。适合关注系统安全、虚拟化技术、区块链底层安全的研究人员和安全工程师阅读。
💡 推荐理由: eBPF 被广泛部署于内核与区块链等关键场景,实现缺陷可导致执行分歧或功能异常,影响范围大;该研究填补了非验证器组件差分测试的空白,具有实用价值。
🎯 建议动作: 研究跟进