CHERI LLVM分支:硬件能力如何重塑AI时代的内存安全

GitHub April 2026
⭐ 69
来源:GitHub归档:April 2026
LLVM编译器基础设施的一个专门分支,正将硬件强制内存安全引入主流开发。ctsrd-cheri/llvm-project将CHERI(能力硬件增强RISC指令)能力直接集成到工具链中,有望在硬件-软件边界消除整类内存破坏漏洞。

ctsrd-cheri/llvm-project代表了基于能力的安全从学术研究到实际部署的关键桥梁。CHERI最初由剑桥大学开发,通过硬件能力扩展传统RISC架构——这些能力本质上是不可伪造的令牌,在细粒度级别管理内存访问权限。该LLVM分支使开发者能够编译利用这些能力的C/C++代码,自动插入边界检查和权限验证,而无需完全重写现有代码库。该项目的重要性在于其潜力,可防止缓冲区溢出、释放后使用及其他内存安全漏洞——这些漏洞约占主流操作系统所有关键安全补丁的70%。通过将安全机制下沉到硬件层,CHERI提供了比纯软件方案更低的运行时开销和更全面的保护,而此LLVM分支正是解锁这一潜力的软件钥匙。

技术深度解析

ctsrd-cheri/llvm-project并非一个简单的补丁,而是对LLVM代码生成和优化通道的实质性重构,旨在理解并发出能力指令。其核心在于,CHERI用能力取代了传统的平面内存指针——这些128位或256位的对象将虚拟地址与边界、权限和有效性元数据结合在一起。编译器必须在每个阶段追踪这些能力:从前端的AST表示,经过中间端的IR优化,到后端的指令选择。

架构: 该分支修改了LLVM针对CHERI启用架构(最初为CHERI-RISC-V和Arm的CHERI原型Morello)的目标描述。关键变更包括:
- 指针表示: 指针被扩展为能力大小(64位CHERI上为128位)。所有指针算术必须保留能力元数据,这意味着编译器不能优化掉边界信息。
- 内建函数: 新的LLVM内建函数(例如`@llvm.cheri.cap.bounds.set`、`@llvm.cheri.cap.perms.and`)直接在IR中暴露CHERI操作,允许优化器对能力变换进行推理。
- 代码生成: 后端发出CHERI特定指令,如`CSetBounds`、`CAndPerm`和`CSeal`,用于能力操作。分支指令被修改为在解引用前检查能力有效性。
- ABI变更: 调用约定被扩展,以在专用能力寄存器中传递能力,并对可变参数函数和函数指针进行特殊处理。

性能影响: 能力检查的开销不可忽视。CHERI-RISC-V上的早期基准测试显示,CPU密集型工作负载平均性能损失5-15%,内存密集型应用则可能放缓高达30%。然而,这种权衡消除了整类漏洞,且没有基于软件的解决方案(如AddressSanitizer,其可能导致2倍减速)的运行时开销。

相关GitHub仓库:
- `ctsrd-cheri/llvm-project` — 支持CHERI的主要LLVM分支。目前有69颗星,在`cheri`分支上活跃开发。
- `CTSRD-CHERI/cheribsd` — 一个启用CHERI的FreeBSD发行版,使用此LLVM分支编译用户空间和内核。
- `CTSRD-CHERI/sail-cheri-riscv` — 用SAIL编写的CHERI-RISC-V形式化规范,用于验证。

数据表格:内存安全开销对比
| 保护方法 | 运行时开销 | 内存开销 | 漏洞覆盖范围 | 采用障碍 |
|---|---|---|---|---|
| CHERI(硬件能力) | 5-15% | 5-10%(更宽的指针) | 所有空间 + 时间(使用密封能力) | 需要CHERI硬件 |
| AddressSanitizer (ASan) | 2倍-3倍 | 3倍-5倍 | 仅空间 | 仅需编译器标志 |
| 内存标记 (MTE) | 1-3% | 2-5% | 概率性(1/16几率) | 需要ARM v8.5-A+ |
| Rust的所有权模型 | 0%(编译时) | 0% | 空间 + 时间(编译时) | 需要语言重写 |

数据要点: CHERI在低运行时开销和全面漏洞覆盖之间提供了最佳平衡,但其硬件依赖性造成了鸡生蛋蛋生鸡的采用问题。LLVM分支是解锁硬件价值的软件钥匙。

关键参与方与案例研究

CHERI生态系统由一个小型但具有影响力的学术与工业参与者联盟推动:

剑桥大学计算机实验室 — CHERI的发源地。Robert Watson和Simon Moore等研究人员是该架构背后的智力力量。他们在CheriBSD和CHERI-RISC-V原型上的工作证明了基于能力的安全在完整操作系统中的可行性。

Arm Holdings — 最重要的商业支持者。Arm的Morello项目生产了一个CHERI启用的处理器原型(Morello SoC)和一个研究用板卡(Avalon)。Arm已公开承诺探索将CHERI用于未来核心,但尚未公布生产时间表。ctsrd-cheri/llvm-project是Morello开发的主要编译器。

Google — 通过其Project Zero和Android安全团队,Google一直是硬件内存安全的积极倡导者。他们为CHERI LLVM分支贡献了改进代码生成的补丁,并在内部使用它评估CHERI用于Android内核和用户空间。

Microsoft — Azure Sphere团队已试验将CHERI用于物联网安全,Microsoft Research与剑桥大学合作对CHERI规范进行了形式化验证。

对比表格:CHERI硬件实现
| 实现 | 架构 | 状态 | 性能 (SPEC2006) | 可用性 |
|---|---|---|---|---|
| CHERI-RISC-V (Bluespec) | RISC-V 64位 | 活跃研究 | 约基线的85% | FPGA比特流 |
| Arm Morello | Armv8.2-A | 原型 (2022) | 约基线的90% | 有限板卡(约1000块) |
| CHERI x86(学术) | x86-64 | 早期仿真 | 不适用 | 不适用 |

更多来自 GitHub

Odin语言:一款值得关注的现代C语言替代者Odin是一款开源编程语言,托管于GitHub上的odin-lang/odin仓库,星标数已超过10,900,单日增长达424颗,反映出社区关注度的急剧攀升。该语言由Ginger Bill创建,定位为C语言的现代替代方案,优先追求高性能、可Distilabel:架起研究与生产桥梁的合成数据管道Distilabel 由 Argilla 团队开发,是一个用于构建快速、可靠且可扩展的合成数据生成与 AI 反馈管道的 Python 框架。它将来自同行评审论文的方法论(如 Self-Instruct、UltraFeedback 和 Con开源SEO工具Open SEO横空出世,免费自托管挑战Ahrefs与Semrush垄断Open SEO,一个在GitHub上全新发布的开源项目,通过将自己定位为商业SEO巨头Semrush和Ahrefs的免费、自托管替代方案,迅速积累了超过3600个星标。该工具提供核心功能,包括关键词研究、反向链接分析、网站审计和竞争对手追查看来源专题页GitHub 已收录 3133 篇文章

时间归档

April 20263042 篇已发布文章

延伸阅读

CHERI C/C++ 编程指南:能力硬件内存安全的终极手册CHERI C/C++ 编程指南正式发布,成为面向CHERI能力硬件开发者的权威参考。该指南系统性地覆盖了指针压缩、能力边界检查等核心概念,填补了CHERI生态系统中长期存在的关键文档空白。CHERIBSD:FreeBSD 硬件内存安全革命已从论文走进现实CHERIBSD 将 FreeBSD 移植到 CHERI-RISC-V 与 Arm Morello 平台,通过硬件强制的能力模型,在架构层面彻底消灭整类内存安全漏洞。这不是一次软件补丁,而是对操作系统管理指针与权限方式的根本性重构。Rust的静默革命:内存安全如何重塑基础设施软件Rust已突破113,900个GitHub星标,正被各大科技巨头用于关键基础设施。AINews深度剖析其所有权模型如何系统性地消除困扰C和C++数十年的内存错误。Clangd:LLVM语言服务器如何重新定义C/C++开发工具链作为LLVM项目官方出品的C/C++语言服务器,Clangd正悄然成为现代C++开发的基石。它依托Clang编译器前端,提供精准的代码补全、诊断和导航功能,性能足以媲美甚至超越商业工具,同时与VS Code、Neovim等编辑器无缝集成。

常见问题

GitHub 热点“CHERI LLVM Fork: How Hardware Capabilities Reshape Memory Safety in AI Era”主要讲了什么?

The ctsrd-cheri/llvm-project represents a critical bridge between academic research and practical deployment of capability-based security. CHERI, originally developed at the Univer…

这个 GitHub 项目在“CHERI LLVM fork performance benchmarks vs ASan”上为什么会引发关注?

The ctsrd-cheri/llvm-project is not a trivial patch but a substantial re-engineering of LLVM's code generation and optimization passes to understand and emit capability instructions. At its core, CHERI replaces tradition…

从“How to compile CheriBSD with ctsrd-cheri/llvm-project”看,这个 GitHub 项目的热度表现如何?

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