# Mark Johnston 的 BSDCan 2025 旅行报告

* 原文：[BSDCan 2025 Trip Report – Mark Johnston](https://freebsdfoundation.org/blog/bsdcan-2025-trip-report-mark-johnston/)
* 2025 年 7 月 11 日
* 作者：Mark Johnston

FreeBSD 基金会赞助我前往渥太华参加 BSDCan 2025 会议及 FreeBSD 开发者峰会。如往常一样，开发者峰会在 6 月 11 日和 12 日举行，为期两天，随后在 13 日和 14 日举办正式会议。按照惯例，我从多伦多乘火车前往渥太华参加 BSDCan，这次带来了我的 ARM Morello 台式机，以便在 Brooks Davis 关于 CHERI 的演讲中使用，并演示将其支持回溯到 FreeBSD。Ed Maste 善意地帮我运送了设备，这让我的行程轻松许多；回程时，我不得不将其放在超大行李箱中随火车携带。我以前从未尝试过这样运输台式机，当我回家后发现它仍然可以正常启动时，我感到相当安心。

开发者峰会的第一天主要以演讲为主，中间安排了充足的休息时间，方便大家交流或进行一些副项目开发。会议期间，我通常会在休息时间和晚上在 90U 的黑客休息室处理一个到两个小项目，这次是针对内核调试的 GDB 脚本，灵感来自与我们尊敬的 pf 维护者 Kristof 的讨论。撰写本文时，我还未完成会议期间想要完成的工作，但很快会完成。

第一天早上的主要亮点是例行的核心小组动态，会中 FreeBSD 核心小组的成员汇报了各类议题。特别引起我注意的是关于在 FreeBSD 项目中使用基于 LLM（大型语言模型）的编程工具的草案政策。简单总结，该政策禁止将 LLM 生成的代码纳入项目，但允许在开发过程中以其他方式使用 LLM，例如帮助审查补丁、撰写提交信息或其他非显式许可的内容。该政策旨在避免将来源不明的代码“污染”FreeBSD 项目，众所周知，许多 LLM 模型训练数据中包含与 BSD 许可不兼容的代码，目前法律上尚缺乏明确先例表明将其输出纳入项目是绝对安全的。

表面上看，这似乎是合理的政策：它试图在保持项目许可完整性（对重要的 \*BSD 用户吸引力很大）与使用新工具辅助开发之间取得平衡。尽管近期 LLM 编程的热度略显夸张，我确实发现它们在某些工作类型中很有用\[\*]。在随后的讨论中，我对会议室中普遍持消极态度感到有些失望。然而，核心小组的做法公平公正，也与其他大型开源项目保持一致，我对未来几年开发者的动态很感兴趣。我的个人观点是——撇开许可问题——我们应鼓励资深开发者在愿意的情况下尽可能利用 LLM。长期从事 OSS 的开发者已经习惯于审查和修改非自己编写的代码，我认为这种怀疑精神足以对低质量 LLM 输出进行把关。

午餐后，Verisign 的 Rick Miller 发表了关于在核心互联网 DNS 基础设施中使用 FreeBSD 的深度防御策略的演讲。他讲解了操作系统多样性在提升安全性方面的作用，以及为什么 FreeBSD 是其中一个理想候选操作系统。作为此策略的一部分，Verisign 在其基础设施中同时使用 Linux 和 FreeBSD，并在不同操作系统上使用不同的应用框架，以进一步降低对单一技术栈的依赖。具体来说，虽然 Verisign 的应用在 Linux 上使用 DPDK，在 FreeBSD 上可以使用 Netmap 框架实现类似的底层网络硬件访问。Rick 还介绍了 Linux 与 FreeBSD 各自存在的内核安全漏洞，但我认为大多数 CVE 级别的内核漏洞高度依赖操作系统，尤其是内存安全漏洞。Verisign 对此策略的全面投入令人印象深刻，我希望未来能看到更多类似案例。

在 Rick 的演讲之后，我和其他 FreeBSD srcmgr（源代码管理）团队成员做了类似早晨核心小组动态的报告，介绍了源代码管理团队的工作及正在解决的问题。特别值得注意的是，我们呼吁潜水者（lurkers）加入团队并参与会议，即便不是正式成员，也能参与源代码管理的讨论及 bug/PR 分拣工作。我们收到了许多感兴趣的开发者反馈，现在几周后，源代码管理的双周会议参与人数从通常的四人增加到九人。

开发者峰会第二天，我参加了 Brooks Davis 有关 CHERI 的演讲，以及将其支持回溯到 FreeBSD 的动机。整个演讲使用我从多伦多带来的 ARM Morello 系统；KDE 桌面堆栈直到用于渲染幻灯片的 PDF 查看器都运行在纯 capability 模式下，所有 C 指针都用 CHERI 能力表示。在此模式下，许多内存安全漏洞会导致应用以确定性崩溃关闭，而非暴露给利用。Brooks 介绍了几个正在进行的商业 CHERI 硬件项目，通常基于 RISC-V，并讲解了从 CheriBSD 上游到 FreeBSD 的路径。CheriBSD 含有一些大规模改动，其中部分无法上游；混合模式下，内核作为典型 aarch64 二进制运行，同时支持纯 capability 用户空间应用。这些补丁较为 hack，需要对内核操作的所有用户空间指针进行显式标注。演讲中，Brooks 还展示了若干 CHERI 特性，尤其是 CheriBSD 的基于库的隔离（c18n）。

在主会议期间，我参加了不少精彩演讲，个人亮点包括：

* **ELF Nightmares, GOTs, PLTs and Relocations Oh My** – John Baldwin 展示了 ELF 二进制执行过程中静态和运行时链接器使用的数据结构，涉及 PLT 函数调用间接跳转等复杂概念，并提供了出色的可视化演示，有助于理解。
* **ABI Stability in FreeBSD** – ShengYi Hung 介绍了新工具 ctfdiff，可比较两个文件的 CTF（Compact C Type Format）数据，检测类型定义和函数签名差异，辅助判断内核变更是否影响出树内核模块的二进制接口。演讲后，围绕如何使用该工具展开了热烈讨论，我提出了比较内核模块与目标内核 CTF 类型图的方法，以减少误报。
* **Improvements to FreeBSD KASAN** – Zhuo Ying Jiang Li 分析了 FreeBSD KASAN 实现的若干不足，并提出解决方案。KASAN 利用编译器插装和小型运行时组件检测内核内存安全漏洞。她指出两个主要问题：一是 UMA slab 中对象间未插入填充，二是已释放对象未隔离，这会降低 KASAN 检测 use-after-free（UAF，释放后重用漏洞）的能力。她提出通过修改 UMA 解决这些问题，并讨论了利用现有 UMA 特性进行优化的策略。我期待这些补丁尽快被上游采纳。

非常感谢 FreeBSD 基金会赞助我的此次行程。

\[\*] 不管怎样，此报告均未借助大型语言模型辅助撰写。
