# 访谈：保障 FreeBSD 安全性

* 原文链接：[Keeping FreeBSD Secure: Learn the Whys and Hows with the FreeBSD Sec Team](https://freebsdfoundation.org/wp-content/uploads/2022/11/interview.pdf)
* 作者：**PAMBAKER** & **ANNEDICKISON**

我们都熟悉这样的场景：房间一片漆黑，唯一的光源来自笔记本电脑的屏幕。一个戴着兜帽的人正疯狂地敲击键盘。突然，终端窗口里出现了一行行符号、字母和数字，这个神秘的角色露出了得意的微笑。他们/已经/入侵了。

但是，事情没那么简单！坚定的安全团队早已做好了准备。安全协议已就位，成功阻止入侵，恶意黑客落网，世界再一次得救。啊，MovieOS（**译者注：电影中虚构的系统**），你怎能不爱呢？

不过，在现实世界里，任何技术的安全性维护几乎都是一项艰巨的任务，加固 FreeBSD 操作系统的安全性也不例外。但我们想更深入了解 FreeBSD 安全团队的职责，以及他们为什么要这么做。因此，我们采访了 GordonTetlow（FreeBSD 安全官，志愿者）、EdMaste（副安全官）和 MarkJohnston（FreeBSD 安全团队成员）。后两位由 FreeBSD 基金会赞助，负责支持安全团队的日常运作，并推动安全性相关的主动开发。

## 问：FreeBSD 项目对安全的总体策略是什么？

**EdMaste**：安全团队的工作涉及 FreeBSD 的多个安全领域，其中一个核心方向是 PSIRT（ProductSecurityIncidentResponseTeam，产品安全事件响应团队）。目前，安全团队的主要工作之一就是 PSIRT 相关的响应。

这个团队的任务是接收并处理各类安全漏洞和问题报告，然后分析问题并协调发布修复方案。例如：

* 设备驱动程序或协议中的错误，
* 通过我们主动的 fuzzing（模糊测试）检测出的漏洞，
* 其他自动化工具发现的安全缺陷，
* 代码审查过程中发现的安全问题。

安全团队的响应流程包括： 1.准备或集成补丁，修复漏洞； 2.编写并发布安全公告，通知社区相关问题； 3.部署二进制更新，确保用户能快速获得修复。

第二个关注重点是主动安全工作，其中包括：

* 有针对性地发现安全问题，
* 漏洞缓解技术（即当漏洞发生时，降低其影响），
* 总体架构安全审查。

历史上，这些工作主要由 FreeBSD 安全团队直接负责。而在当前的安全团队模式下，某些特定领域的责任已划分给了独立的专家小组。例如，FreeBSD 的随机数生成子系统就是一个典型案例——安全团队仍然参与其中，但具体责任已经委派给了专门的维护团队。

主动安全工作还包括：

* 持续的代码审查和安全审计，
* 关注其他开源项目的安全报告和讨论，
* 模糊测试（fuzzing）及测试失败分析，
* 其他相关领域的安全研究。

第三个重点是 FreeBSD 基础设施本身的安全性，包括：

* FreeBSD 官网，
* 源代码仓库，
* 所有官方运行的服务。

在这些方面，主要责任归属于 FreeBSD 项目内的其他团队，而安全团队主要提供建议和审查支持。

**GordonTetlow**：我们的另一个重要职责是与行业安全工作保持协调。有些漏洞不仅影响 FreeBSD，还涉及共享代码的其他开源项目，因此需要进行跨项目协作。

典型例子是 OpenSSL。FreeBSD 采用了 OpenSSL，我们需要协调漏洞的披露以及补丁的响应工作，以确保 FreeBSD 用户能够及时获得修复。

此外，我们还负责上游协调。例如，英特尔的“Spectre”和“Meltdown”推测执行漏洞曝光时，整个行业的操作系统厂商和相关企业都需要合作，形成一致的应对措施。无论结果如何，这类跨行业漏洞应对需要我们发挥重要作用。

## 问：FreeBSD 在漏洞披露方面的具体角色是什么？

**EdMaste：** 如果 FreeBSD 发现了需要修复的安全漏洞，我们负责向 FreeBSD 社区公开披露该漏洞，并提供补丁和二进制更新。

同时，我们还参与行业层面的漏洞披露协调。例如，如果某个漏洞影响了 Linux、OpenBSD、NetBSD 和 FreeBSD，那么我们会与其他项目合作协调漏洞披露流程，确保修复方案按照漏洞报告者或行业协调方设定的时间表统一发布。

## 问：你们是否有正式的角色分工，或者有指导安全工作的使命声明或章程？

**EdMaste：** 引用 FreeBSD 项目的“管理和运作”页面内容：

FreeBSD 安全团队（由安全官领导）负责让社区了解影响 FreeBSD `src` 和 `ports` 树的漏洞、攻击方式及安全风险，并推广和发布运行 FreeBSD 系统所需的安全信息。此外，该团队还负责解决影响 FreeBSD 安全性的软件漏洞并发布安全公告。《FreeBSD 安全官章程》对安全官的职责和责任进行了更详细的描述。

**GordonTetlow：** 安全官的章程规定，他们的职责是确保系统安全，其中包括在必要时可以推翻其他开发者的决定，以维护安全。我们不会轻易行使这一权力，必须谨慎使用。但章程要求我们必须采取一切必要手段，确保我们的工作方向是正确的。

## 问：安全公告的报告如何处理？可以匿名并受到保护吗？

**EdMaste：** 我们在 FreeBSD 网站上提供了相关指南，说明了安全团队遵循的政策、处理流程、安全公告的发布方式以及其他有用的信息。

**GordonTetlow：** 请注意安全团队主页上的“何时发布安全公告”部分。对于希望报告安全问题的人员，我们也提供了相关文档，说明如何提交安全公告。这些内容作为附属信息列出。人们可以通过普通邮件或 PGP 加密邮件发送至`secteam@FreeBSD.org`。我们希望让大家知道，如果需要向我们报告敏感问题，可以加密数据，以确保只有极少数指定的人员能够读取信息。

## 问：你们还有哪些方法来发现安全问题？

**MarkJohnston：** 除了处理第三方研究人员报告的漏洞，我们还主动寻找安全问题，力求做到积极发现并迅速响应。就我个人而言，主要是通过日常的 FreeBSD 维护工作，包括查看错误报告、用户提交的问题，并进行自主测试。社区中有几位开发者专门负责测试 FreeBSD 并报告 bug。在深入研究这些报告时，即使报告者自己没有意识到安全风险，也可能会发现潜在的安全漏洞。我花费大量时间分析这些报告，寻找其中可能比最初看起来更严重的问题。

**EdMaste：** Mark 还曾致力于将 Syzkaller 这一基于代码覆盖率的系统调用模糊测试工具引入 FreeBSD，并与该项目的维护者合作，使其能够持续运行。Syzkaller 通过自动化的内核模糊测试，寻找可能导致内核崩溃或由检测机制识别出的异常输入。Syzkaller 的报告可能揭示潜在的安全漏洞，但无论如何，它发现的问题都是需要修复的 bug。Mark 还提升了 Syzkaller 的代码覆盖率，分析了其报告，并修复了许多问题。

FreeBSD 还拥有一款压力测试工具集，名为“stress2”，它可以发现在高负载下出现的竞争条件或异常行为。该工具已帮助修复了多个内核 bug。

**EdMaste：** 在众多 bug 报告邮件列表、社交媒体和其他渠道的信息中，Mark 还能识别出用户明确希望修复的问题。许多情况下，报告者自己并未意识到问题可能带来的安全影响。我们会尽可能深入分析这些问题，评估其潜在的安全风险，并在必要时采取行动。

## 问：安全团队接下来的工作计划是什么？

**EdMaste：** 在安全团队内部，我们正在推进多个技术和运营方面的改进。目前，我们专注于通过模糊测试和其他工具发现潜在问题，并计划继续加强这方面的工作。例如，我们希望扩展 Syzkaller，使其涵盖更多的系统调用，并提高代码覆盖率。这项工作已持续了一段时间，但未来我们还将加大力度，重新审视系统默认配置，并在基本系统和`ports` 的软件中应用沙盒技术、权限缩减以及其他用户空间安全机制。

在运营方面，我们计划加强与使用 FreeBSD 作为开发基础的下游项目和厂商的协调。此外，我们还需要不断吸纳新成员加入安全团队——这对许多开源项目来说都是一项挑战。

***

**PAMBAKER** 是一位多产且风格多样的作家，为多家领先的科技和科学出版物撰稿，同时也是多部纸质书籍、电子书和白皮书的作者。她的最新著作 *DecisionIntelligenceForDummies* 介绍了一种新的数据挖掘方法，以及如何利用 AI 进行决策，该书于 2022 年 2 月发布。Baker 目前居住在美国乔治亚州亚特兰大市，正在创作她的第一部科幻小说。

**ANNEDICKISON** 于 2015 年加入 FreeBSD 基金会，拥有 20 多年专注于科技领域的市场营销与传播经验。她曾担任 USENIX 协会的市场总监和联合执行董事，这段经历让她深刻意识到自由和开源技术的重要性，并坚定地推广这些理念。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/20220910-an-quan-xing/anquan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
