CHERIBSD:FreeBSD 硬件内存安全革命已从论文走进现实

GitHub April 2026
⭐ 207
来源:GitHub归档:April 2026
CHERIBSD 将 FreeBSD 移植到 CHERI-RISC-V 与 Arm Morello 平台,通过硬件强制的能力模型,在架构层面彻底消灭整类内存安全漏洞。这不是一次软件补丁,而是对操作系统管理指针与权限方式的根本性重构。

CHERIBSD 是 CHERI(Capability Hardware Enhanced RISC Instructions)生态系统的操作系统层,源自剑桥大学与 SRI International 长达十年的研究项目。它通过修改 FreeBSD 的内核、库和工具链,利用 CHERI 的硬件能力,用带有边界和权限标签的能力指针取代了传统的扁平虚拟地址。每一次内存访问都在运行时受到检查:缓冲区溢出会立即触发硬件陷阱,而非静默地破坏数据。该项目目前支持两个硬件目标:Arm Morello(一款配备 256 位能力寄存器的原型板)和 CHERI-RISC-V(一个开放的 ISA 扩展)。其安全前景极为可观——微软和谷歌的数据一致显示,内存安全漏洞占所有 CVE 的 70%,而 CHERI 有望阻止其中绝大部分。

技术深度解析

CHERIBSD 绝非一次简单的移植。它要求从引导加载器开始,向上贯穿 C 库、编译器(LLVM/Clang)以及每一个系统调用接口,对 FreeBSD 进行全面改造。其核心机制是 CHERI 能力:一个 128 位或 256 位的对象,用以取代传统的指针。一个能力不仅包含地址,还包含边界(基址和长度)、权限(读/写/执行/加载能力/存储能力),以及一个存储在内存中与数据并行的不可伪造的标签位。标签位是关键——它无法由软件设置,只能由硬件在能力从有效根能力正确派生时设置。这意味着攻击者无法通过覆写内存来伪造指针;任何通过存储指令设置标签位的尝试都会将其清除,硬件将在后续任何使用时触发陷阱。

架构层次:
- 内核: FreeBSD 内核被重写,所有内核空间指针(包括虚拟内存子系统、文件系统缓冲区缓存和设备驱动中的指针)均使用能力。内核自身的堆分配器(uma)被修改为返回带边界的能力。
- 用户空间: C 库(libc)和动态链接器(rtld)已适配。每次 malloc() 返回的能力,其边界与请求的大小精确匹配。栈通过守卫能力得到保护。信号处理器和线程库被重新设计,以在上下文切换中保持能力的完整性。
- 编译器: LLVM 的 CHERI 后端生成的代码使用能力指令(例如 CIncOffset、CSetBounds、CLoad、CStore)而非普通的加载/存储。编译器还会插入能力来源检查——确保从一个分配派生的指针不能用于访问另一个分配,即使地址重叠。

性能权衡: 开销不可忽视。每次内存访问现在都需要在硬件中检查边界和权限,加上更大的能力尺寸(16 或 32 字节,而传统指针为 8 字节)会增加缓存压力。剑桥大学 CHERI 团队的基准测试数据显示:

| 基准测试 | 原生 FreeBSD (x86) | CHERIBSD (Morello) | 开销 |
|---|---|---|---|
| SPEC CPU 2006 (几何平均) | 1.00x | 1.12x – 1.35x | 12–35% |
| nginx 静态文件服务 | 100,000 req/s | 72,000 req/s | 28% |
| SQLite 内存查询 | 50,000 qps | 38,000 qps | 24% |
| malloc/free 微基准测试 | 10M ops/s | 5.8M ops/s | 42% |

数据要点: 开销真实存在但并非灾难性——根据工作负载不同,在 12-42% 之间。内存密集型和指针密集型工作负载(malloc、数据库)受影响更大。对于安全关键的嵌入式系统(路由器、物联网网关),当吞吐量次于完整性时,这种权衡是可以接受的。对于通用计算,在没有硬件优化的情况下,这仍然是一个难以推广的选择。

值得关注的 GitHub 仓库:
- `ctsrd/cheribsd`(207 星):主要的操作系统移植版本。代码库是 FreeBSD-CURRENT 的一个分支,带有大量 CHERI 补丁。最近的提交显示正在持续进行 PCIe 设备驱动支持和网络栈加固的工作。
- `CTSRD-CHERI/cheri-c-programming`(48 星):一个教程仓库,演示如何编写 CHERI 感知的 C 代码,包括如何使用能力 API 调用,如 `cheri_bounds_set` 和 `cheri_perms_set`。
- `CTSRD-CHERI/llvm-project`(112 星):经过 CHERI 修改的 LLVM/Clang 工具链。包含 CHERI-RISC-V 和 Morello 后端。

关键参与者与案例研究

CHERI 生态系统由一个规模不大但影响力颇高的联盟推动:

- 剑桥大学计算机实验室(Prof. Robert Watson、Dr. Jonathan Woodruff、Dr. Peter Sewell):最初的架构师。Watson 领导 CHERIBSD 的开发。他们的研究论文(例如《CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization》)是奠基性文献。
- SRI International(Dr. John Rushby、Dr. Ben Laurie):能力模型的共同发明者。SRI 在形式化验证方面的专长对于证明 CHERI 的安全属性至关重要。
- Arm Holdings:Morello 的创造者。Arm 的投资具有战略意义——他们将 CHERI 视为服务器和基础设施芯片的潜在差异化因素。Morello 是一个原型,但 Arm 尚未承诺商业量产。
- 微软:主要资助者和早期采用者。微软研究院已将 Windows 移植到 CHERI(Project CHERI-Windows),并发表了关于对 NT 内核进行分区隔离的论文。他们是企业界最积极的倡导者,引用内部数据称 70% 的 CVE 本可通过 CHERI 避免。
- 谷歌:态度更为谨慎。Android 的内存安全工作侧重于采用 Rust 和硬件标记内存(ARMv9 上的 MTE),后者是一种更轻量级的替代方案。谷歌尚未公开承诺采用 CHERI。

与竞争方案的比较:

| 方案 | 粒度 | 所需硬件 | 性能开销 | 成熟度 |
|---|---|---|---|---|
| CHERI (CHERIBSD) | 每指针,细粒度 | 定制处理器(Morello、CHERI-RISC-V) | 12-42% | 原型/研究阶段 |
| Arm MTE (Memory Tagging Extension) | 每 16 字节,粗粒度 | ARMv9 处理器 | 1-5% | 已量产(部分芯片) |
| Rust 语言 | 编译时,静态 | 无 | 0%(编译时) | 生产就绪 |
| 软件地址消毒剂 (ASan) | 运行时,软件 | 无 | 2-3 倍 | 开发/测试工具 |

编辑点评: CHERI 在安全承诺上远超 MTE 和 Rust,因为它从硬件层面防御了所有内存安全漏洞类别,包括那些 Rust 的所有权模型无法覆盖的(例如,通过不安全的代码块或 C 互操作引入的漏洞)。然而,其硬件依赖性和性能开销使其在短期内难以进入消费级市场。最可能的早期采用场景是:高安全性的网络设备、航空航天系统、以及需要满足严格合规标准(如 ISO 26262 ASIL-D 或 DO-178C DAL-A)的嵌入式控制器。

更多来自 GitHub

Cabinet:这款AI优先的知识操作系统,能否颠覆Notion?Cabinet并非又一款聊天机器人附体的笔记应用。它将自己定位为完整的“初创公司操作系统”,AI是核心引擎,而非附加功能。该项目托管于GitHub(仓库名:hilash/cabinet),增长迅猛,单日收获近700颗星,总数达1733。这标CHERI C/C++ 编程指南:能力硬件内存安全的终极手册CHERI(能力硬件增强RISC指令集)架构是最有前景的软硬件协同设计方案之一,旨在从根源上消除内存安全漏洞。多年来,CHERI生态系统虽拥有丰富的研究论文和学术原型,却严重缺乏实用、对开发者友好的文档。官方CHERI C/C++编程指南在OpenAgent:零星AI框架,能否重新定义多智能体编排?OpenAgent是一个全新的开源AI智能体框架,旨在简化多智能体系统的构建与编排。目前该项目在GitHub上星标数为零,没有任何过往记录、社区反馈或实际应用验证。其文档网站(托管于 the-open-agent/openagent-web查看来源专题页GitHub 已收录 1243 篇文章

时间归档

April 20263009 篇已发布文章

延伸阅读

CHERI-RISC-V 的 Sail 模型:硬件安全前沿的深度探秘一个基于 Sail 语言的 CHERI-RISC-V 形式化模型,正在悄然重塑硬件安全验证的范式。这个开源项目提供了一份可执行的规范,有望加速基于能力的存储保护机制在 RISC-V 生态系统中的普及。CHERI C/C++ 编程指南:能力硬件内存安全的终极手册CHERI C/C++ 编程指南正式发布,成为面向CHERI能力硬件开发者的权威参考。该指南系统性地覆盖了指针压缩、能力边界检查等核心概念,填补了CHERI生态系统中长期存在的关键文档空白。CHERI LLVM分支:硬件能力如何重塑AI时代的内存安全LLVM编译器基础设施的一个专门分支,正将硬件强制内存安全引入主流开发。ctsrd-cheri/llvm-project将CHERI(能力硬件增强RISC指令)能力直接集成到工具链中,有望在硬件-软件边界消除整类内存破坏漏洞。LLM发现FreeBSD漏洞,CHERI硬件将其扼杀:安全范式正在颠覆大语言模型首次在FreeBSD内核中发现致命内存损坏漏洞,但攻击在CHERI硬件层面被彻底阻断。这一里程碑证明:硬件原生的安全机制,能在AI发现的零日漏洞被利用之前,将其化为无形。

常见问题

GitHub 热点“CHERIBSD: FreeBSD's Hardware Memory Safety Revolution Is Real”主要讲了什么?

CHERIBSD is the operating system layer of the CHERI (Capability Hardware Enhanced RISC Instructions) ecosystem, a decade-long research project from the University of Cambridge and…

这个 GitHub 项目在“CHERIBSD vs Linux memory safety comparison”上为什么会引发关注?

CHERIBSD is not a simple port. It required modifying FreeBSD from the bootloader up through the C library, compiler (LLVM/Clang), and every system call interface. The core mechanism is the CHERI capability: a 128-bit or…

从“Arm Morello board cost and availability 2026”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 207,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。