LPC 2026 eBPF 议程前瞻:Rust 要进 verifier,BPF 被推上 CVE 空窗期前线
本文地址:https://www.ebpf.top/post/lpc2026-ebpf-track
每年秋天,内核社区最核心的开发者都会聚到一起,把接下来一两年要落地的东西摊开来吵一遍。今年的 Linux Plumbers Conference 定在 10 月 5 日到 7 日,捷克布拉格。
其中的 eBPF Track 排了 24 场议题,集中在前两天,技术委员会是三位 BPF 维护者 Alexei Starovoitov、Daniel Borkmann 和 Andrii Nakryiko。把 24 份议题摘要逐一读完,今年最值得关注的是两条线:一是 BPF 正在为完整支持 Rust 重写 verifier,二是在 LLM 加速漏洞发现的背景下,BPF 被推到了不重启缓解漏洞的最前线。
这篇导读先给出全景,再挑重点议题展开,文末附完整日程,方便大家按图索骥。需要说明的是,会议还没召开,幻灯片也没放出,下文内容都来自官方议题摘要,不代表会上结论。
1. 先看全景:24 场议题的六条主线
按议题内容归类,24 场可以分成六组:
| 主线 | 场次 | 关键词 |
|---|---|---|
| Rust 与语言、工具链 | 5 | Rust-BPF、异常处理、BTF 多语言、Rex、GCC |
| verifier 与 JIT 的正确性和性能 | 5 | 内存模型、KASAN、值追踪、携带证明的验证、kops |
| 安全:热缓解与加固 | 5 | shirudo、LSM hook 规模化、WhatsApp TEE、bpf-rbacd |
| 新的可编程点 | 4 | 缺页处理、sysctl、跨虚拟机、RV 监视器 |
| 网络与生产案例 | 4 | HTTP 解析、PlayStation 防 DDoS、ksock、车载 |
| 学术综述 | 1 | eBPF 学术研究趋势 |
从报告人所属机构看(以议程登记为准,少数未登记的按公开资料补充),Isovalent 和 Meta 各有 4 场,Oracle、Red Hat、ETH Zurich 各 2 场,Google、SUSE、Bootlin、索尼各 1 场,另有 5 场来自高校和研究机构。
2. Rust 进场:verifier 要为一门完整语言重写
大会开场的前四场,全部和 Rust 有关。
Alexei Starovoitov 的 Rust-BPF updates 是整个 Track 的定调之作。 摘要里说得很直接:要支持完整的 Rust,verifier 处理指令的方式需要重新思考。栈活跃性分析、SCEV(标量演化,用于推导循环变量取值范围)、间接调用是已知的基础模块,但"more fundamental rewrite is still necessary"(更根本的重写仍然必要)。这场会覆盖 verifier、LLVM、GCC、rustc、libbpf 五个方向的进展。
紧随其后,Yonghong Song 的 大尺寸参数与 Rust 异常处理 补上两块拼图:
- 大尺寸参数:现在的 verifier 会拒绝参数是结构体、联合体或超过一个寄存器宽度的函数,用户只能改写代码去迁就,这项限制要去掉。
- 异常处理:C 写的 BPF 程序只有
bpf_throw();Rust 支持在每一层函数上挂清理回调,A → B → C 调用链中 C 抛出异常时,依次执行 C、B、A 的清理逻辑。9 月 16 日,Yonghong Song 在 bpf-next 上发出了相关的 20 补丁系列,让bpf_throw()回溯栈时执行清理代码。
Oracle 的 Alan Maguire 则在 BTF 多语言扩展 里讨论切片、带标签联合体、泛型、接口、生命周期这些 C 没有的概念,怎么表示成 BTF。
有意思的是,Google 带来了一条完全不同的路线。 Aniket Gattani 的 Slaying the BPF Verifier 介绍新版 Rex:不走 verifier,而是依靠 Rust 的类型系统、借用检查器和专门的编译器 pass,在编译期复现 verifier 的安全保证,新版做到完全静态编译、不会 panic,并已经和 Google 的 ghOSt 调度器完成概念验证。
一边是让 verifier 学会理解 Rust,一边是用 Rust 编译器替代 verifier,两条路线同场出现,会上怎么碰撞值得关注。
3. 给 verifier 上锁:测试、证明与消毒器
verifier 是 BPF 的安全边界,但它自身越来越复杂,也越来越难审计。今年有一组议题,都在尝试用外部的测试和证明来约束 verifier 与 JIT。
Meta 的 Puranjay Mohan 带来 blitmus,瞄准一个少有人注意的空白:eBPF 没有形式化的内存模型。 如今 eBPF 已经有 load_acquire / store_release、多架构 JIT 的 arena 原子操作、rqspinlock、无锁 ringbuf,程序跨 CPU 并发协作越来越常见。内核本身有可执行的内存模型 LKMM 和 klitmus7 工具,eBPF 却无法检查程序要求的内存序在经过 verifier 和各架构 JIT 之后是否还成立。
blitmus 把 LKMM 的 litmus 测试转换成 BPF 程序,每个测试进程绑定到一个 CPU,让它们竞争数百万次再统计结果。同一个测试不改动就能跑在所有架构上,能发现 JIT 漏掉内存屏障这类平时静默、出事致命的 bug。会上会展示 aarch64 与 x86-64 上的结果,其中有一个本应永不发生、却被 blitmus 判为违反的测试;作者也会借这个例子讨论工具本身的保真度,也就是这种批量测试能多真实地模拟多 CPU 竞争。
慕尼黑工业大学的 Proof-Carrying Verification 则想从架构上给 verifier 减负。 现在 verifier 在内核里同时负责找证明和查证明,编译器早已知道的循环不变量传不进来,推不出来就只能拒绝。新思路是拆开:用户态的证明生成器借助 SMT 求解器找出不变量,输出一份证书;内核里的检查器只校验证书的每一步,不搜索、不调用 SMT。团队已经有端到端原型,初步结果显示在需要大量路径探索的大程序上,证书检查尤其快。
另外两场也在这条线上:
- 性能:UC Santa Cruz 与 ETH Zurich 研究者的 kops 与 rejit 指出,从生产程序提取的 27 个微基准中,eBPF 管线最多比原生编译慢 2 倍,一个 64 位循环移位要 15 条机器指令,而原生只要一条 ROL。方案是用户态重写字节码,加上由内核模块注册硬件相关的新操作;每个新操作都附带一段 verifier 能检查的普通 eBPF 等价序列,并可用 Lean 4 证明两者结果一致。数据是 x86-64 最多提速 24%,Cilium 与 Katran 数据面吞吐最多提升 12%。
- 排障:Bootlin 的 JIT 程序 KASAN 支持 让 JIT 在每次访存前插入
__asan_*()调用,补上 JIT 代码逃过内存检查的盲区,项目由 eBPF 基金会资助。
4. CVE 空窗期:BPF 被推上热缓解前线
这是今年最有时代感的一组议题。 背景是一个越来越尖锐的矛盾:LLM 让漏洞发现的速度大幅提升,而数据中心、Kubernetes 节点、嵌入式设备打补丁加重启的周期并没有变短。
Daniel Borkmann 和 John Fastabend 的 shirudo 把这个矛盾摆在了台面上。 摘要开头就写:“In times of Fable/Mythos or equivalent LLMs, security fixes and attack-surface hardening increasingly needs to land on production systems now”(在 Fable、Mythos 这类 LLM 的时代,安全修复和攻击面收缩越来越需要立刻落到生产环境)。
shirudo 是一个不需要常驻 agent 的 BPF 安全平台,有几处设计很有辨识度:
- 刻意不做配置 DSL,理由是 agent 直接写代码效果更好,缓解补丁的天然作者就是与运维人员协作的 agent;
- 全面使用 xattr 和 BPF 签名,并用 BPF LSM 封住自身所有资产,防止不可信的 root 篡改 BPF。
但 BPF 能改变执行路径的地方其实有限,这正是 Isovalent Anton Protopopov 那场 BPF LSM hook 与 error injection 规模化 要解决的问题。 目前只有两种手段:LSM hook 受限于现有集合,error injection 受限于很短的 ALLOW_ERROR_INJECTION 白名单,net/ 的很多部分和大量驱动完全没有 BPF 安全覆盖。议题会讨论怎样系统地补 hook,也会评价 Sasha Levin 提出的 killswitch:它允许任意函数被短路,确实解决了问题,但难以控制。
生产级的答卷来自 Meta。 WhatsApp TEE 里的无守护进程 eBPF LSM 讲的是 AMD SEV 机密虚拟机宿主机防护中的一层:
- exec 时,
bprm_creds_from_filehook 读取二进制上的 xattr 得到角色名; - 调用
bpf_get_fsverity_digest和bpf_verify_pkcs7_signature,用该角色的证书校验 fs-verity 摘要与 PKCS7 签名,通过才登记进角色; ptrace与task_kill相关 hook 按角色白名单拦截,宿主机上谁都无法调试或给机密 VM 发信号。
整套程序由一个跑完即退的 init 程序加载并 pin 到 bpffs,不需要常驻守护进程,LSM link 在 pivot_root 之后依然有效。签名、fs-verity、xattr 与 BPF LSM 组合在一起,完整走通了从校验二进制身份到运行时防护的整条链路。
权限侧也有进展:Red Hat 的 Toke Høiland-Jørgensen 会介绍 bpf-rbacd,在 BPF token 基础上用 BPF 写的 LSM 精确限定应用能用哪部分 BPF,正在推进成为 Fedora 和 RHEL 的核心组件。
5. 可编程点继续外扩:从缺页到 sysctl
BPF 这些年一直在吞掉本来要加内核参数或写内核模块的场景,今年又多了几个新方向。
最吸引眼球的是哥伦比亚大学的 bpf_fault,合作者里还有内核内存管理维护者 David Hildenbrand。 它让应用直接在内核里用 eBPF 处理缺页,替代开销高、扩展性差的 userfaultfd:
- 缺页延迟降低 2.8–6.1 倍,消除了
userfaultfd的扩展性瓶颈; - 集成 Firecracker 和 QEMU 的虚拟机在线快照,消除快照造成的尾延迟尖刺;
- 设计了把重定位推迟到缺页时的延迟动态链接,让 Chrome、Clang 的脏内存最多减少 50%。
另外几场同样值得一看:
- Oracle 的 BPF 与 sysctl:以 accept 队列为例,队列满了才丢 SYN 往往太晚,挂一个 BPF 程序就能结合系统状态提前丢弃,让服务尽快恢复。
- Red Hat 的 可插拔 RV 监视器:运行时验证监视器不必再逐个进上游,改用 BPF struct_ops 在用户态开发和部署。
- GSoC 项目 跨虚拟机边界的 eBPF 编程:借助 QEMU IVSHMEM,让 guest 与 host 的 BPF 程序共享内存。
6. 生产一线:PlayStation 与 eBPF 里的 HTTP
索尼的 PlayStation 防 DDoS 是本届最硬核的生产案例。 游戏服务器面对的是数 Tbps 级别的攻击,他们的架构有三层:
- 入口:给合法客户端发放短期令牌,XDP 在协议栈最早处做白名单校验,不在无用流量上浪费 CPU;
- 节点:K8s 节点上的 eBPF agent 在公网防护层与私有游戏服务器云之间形成透明 overlay,后端集群无需暴露到公网;
- 控制面:基于 CNCF xDS,把令牌高速分发到全球入口,持续更新驱动路由决策的 BPF map。
ETH 的 Beeper 则挑战了一个老难题:在 eBPF 里解析 HTTP。 HTTP 是自描述协议,需要的状态和控制流远超 verifier 的舒适区。Beeper 的办法是在用户态构造类似 Aho-Corasick 的状态机,交给内核里的 eBPF 程序去识别和提取报文头,不需要内核模块。议题会讨论解析 HTTP/1.1 和 HTTP/2 要解决的难点,并演示直接从 eBPF 响应 HTTP 请求。
同一天下午,Isovalent 的 BPF ksock 想让 BPF 程序直接往网络发数据,把用户态从可观测与日志的关键路径上拿掉;这个话题在前两届 LSF/MM/BPF 上都讨论过,最初基于 netpoll 的方案最终被否,这次会介绍当前的新设计。
7. 分会场彩蛋:不在 eBPF Track,但同样和 BPF 有关
eBPF Track 之外,还有 30 多场议题与 BPF 直接相关,挑几场值得关注的:
- sched_ext 分会场(10 月 7 日下午):NVIDIA 的 Andrea Righi 讨论让 proxy execution 与 sched_ext 兼容,两者目前在编译期互斥;Google 提出用 pvsched 与 sched_ext 实现虚拟机调度直通;NVIDIA 还有一场用 sched_ext 把任务自动放到 GPU 附近。
- 可观测分会场:Brendan Gregg(现就职于 OpenAI)的 Performance Tools and Prompts 讨论性能工程从跑工具变成跑提示词和 agent,甚至抛出一个问题:提示词和 agent 将来是否也该进内核源码树?Cloudflare 的 Jakub Sitnicki 则会讲 用 per-skb BPF 元数据追踪包在内核里的路径。
- 安全分会场:UIUC 的 IMA-BPF 把 BPF 签名接入 IMA 的度量、评估和 TPM 证明;Ignat Korchagin 的 Crypto API v2 针对 Copy Fail 之后有维护者提议废弃用户态 Crypto API,质疑这是否矫枉过正,并在改进选项里提出用 eBPF 以更受控的方式暴露它。
- 网络分会场:SUSE 与 LINE 的 KNOD 把 XDP 程序 JIT 成 AMD GPU 机器码,Katran 类负载最高 70 Mpps。
8. 总结
把 24 场议题放在一起看,可以读出几个清晰的信号:
- BPF 正在从 C 的受限子集,走向能承载完整语言的运行时,Rust 是第一个目标;
- verifier 的安全性开始被外部化、形式化,内存模型测试、证书检查、Lean 证明、KASAN 都在给它上锁;
- 不重启缓解漏洞正在成为 BPF 安全的主叙事,签名、fs-verity、xattr 与 BPF LSM 的组合已有生产案例;
- BPF 权限模型开始进入发行版,可编程点也在继续外扩到缺页、sysctl 和运行时验证。
编者认为,其中最值得会后跟进的是 Rust-BPF 与 Rex 两条路线的交锋,以及 shirudo 所代表的 agent 驱动热缓解能否真正落地。幻灯片和视频放出后,我们会挑选重点议题再做深入解读。
延伸阅读
若还想顺着读,可看这几篇:
- Cloudflare 基于 BPF LSM 热修高危提权 Copy Fail
- eBPF 安全分发:内核 6.18 证书签名机制实测
- 广告 P99 砍掉 28%:Meta 把 BPF sched_ext 打进 Ads 机群
附:LPC 2026 eBPF Track 完整日程
时间为布拉格当地时间(北京时间需加 6 小时)。eBPF Track 在布拉格会议中心 South Hall 1A,每场 30 分钟;sched_ext 分会场在 Club H,每场约 18 分钟。
10 月 5 日(周一)
| 时间 | 议题 | 报告人 | 机构 |
|---|---|---|---|
| 10:00 | Rust-BPF updates(Rust-BPF 进展) | Alexei Starovoitov | Meta |
| 10:30 | 大尺寸参数与 Rust 异常处理 | Yonghong Song | Meta |
| 11:00 | 扩展 BTF 以支持更多语言 | Alan Maguire | Oracle |
| 12:00 | Rex:用 Rust 实现安全的静态内核扩展 | Aniket Gattani | |
| 12:30 | blitmus:在真实硬件上测试 eBPF 内存模型 | Puranjay Mohan | Meta |
| 13:00 | JIT 编译的 BPF 程序支持 KASAN | Alexis Lothoré | Bootlin |
| 15:00 | BPF verifier 与 GCC | Vineet Gupta | — |
| 15:30 | verifier 值追踪的演进 | Shung-Hsi Yu | SUSE |
| 16:00 | eBPF 的携带证明验证 | Martin Fink | 慕尼黑工业大学 |
| 17:00 | kops 与 rejit:按硬件和负载优化 eBPF | Yusheng Zheng、Hao Sun | UC Santa Cruz、ETH Zurich |
| 17:30 | BPF、sysctl 与可编程的内核决策点 | Alan Maguire | Oracle |
| 18:00 | eBPF 安全:不均衡的防护版图 | Gürkan Gür、Louie Wolf | 苏黎世应用科学大学 |
10 月 6 日(周二)
| 时间 | 议题 | 报告人 | 机构 |
|---|---|---|---|
| 10:00 | eBPF 学术研究在做什么 | Paul Chaignon | Isovalent |
| 10:30 | bpf_fault:用 eBPF 自定义缺页处理 | Tal Zussman | 哥伦比亚大学 |
| 11:00 | 跨虚拟机边界的 eBPF 编程 | Roy Nchang | 雅温得国立高等工程学院 |
| 12:00 | shirudo:面向 AI 时代的 BPF 热修补设施 | Daniel Borkmann、John Fastabend | Isovalent |
| 12:30 | WhatsApp TEE 里的无守护进程 eBPF LSM | Joshua Lilly、Liam Wisehart | Meta(Lilly) |
| 13:00 | 全内核扩展 BPF LSM hook 与 error injection | Anton Protopopov | Isovalent at Cisco |
| 15:00 | Beeper:在 eBPF 里解析应用层协议 | Laurin Brandner | ETH Zürich |
| 15:30 | PlayStation 用 eBPF/XDP 防护游戏服务器 DDoS | Babis Stylianopoulos、Jeffrey Barendse | 索尼互动娱乐 |
| 16:00 | BPF ksock:让 BPF 使用网络 socket | Kornilios Kourtis、Mahé Tardy | Isovalent |
| 17:00 | BPF-RBACd:细粒度下放 BPF 权限 | Toke Høiland-Jørgensen | Red Hat |
| 17:30 | eBPF 上车:汽车与工业场景 | Reinhard Kugler | SBA Research |
| 18:00 | 用 BPF 实现可插拔的 RV 监视器 | Gabriele Monaco | Red Hat |
10 月 7 日(周三)sched_ext 分会场
| 时间 | 议题 | 报告人 | 机构 |
|---|---|---|---|
| 15:10 | 通过 pvsched 与 sched_ext 实现虚拟机调度直通 | Josh Don、Vineeth Remanan Pillai | |
| 15:28 | 基于 BPF 的可组合空闲 CPU 选择 | Emil Tsalapatis | Meta |
| 15:46 | 驯服锁持有者与等待者被抢占造成的延迟尖刺 | Changwoo Min | Igalia |
| 16:04 | 让 proxy execution 与 sched_ext 兼容 | Andrea Righi | NVIDIA |
| 17:00 | 让任务保持缓存热度:LAVD 调度器的黏性 | Gavin Guo | — |
| 17:18 | Intel HFI 接入 sched_ext | Srinivas Pandruvada | Intel |
| 17:36 | 加速器负载的自动放置 | Balbir Singh、Lee Trager | NVIDIA |
完整议程与每场摘要见 LPC 2026 eBPF Track 官方页面。
本文为会前导读,内容整理自官方议题摘要,非会议实录。
- 原文作者:DavidDi
- 原文链接:https://www.ebpf.top/post/lpc2026-ebpf-track/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 最后更新时间:2026-10-19 19:24:00 +0800 CST