CHERI 是过去十年硬件安全领域最有影响力的项目之一。它的思路是在 CPU 里加入能力(capability)机制——每个指针不再只是一个内存地址,而是一个带边界的授权令牌。指针不能越界访问,不能伪造。这解决了空间安全(缓冲区溢出等)。但时间安全——use-after-free——一直没被完全解决。
use-after-free 很微妙。内存被释放后重新分配给另一个对象,但缓存里还留着一个旧指针——旧指针仍然指向这块内存,只是内存里的数据已经属于别人了。读旧数据是信息泄露,写旧数据是内存破坏。更麻烦的是:释放和重新分配之间的窗口期太短,短到无法被软件层面的检查覆盖。
Wang、Woodruff 和团队在剑桥大学多年 CHERI 工作的基础上,提出了一个基于硬件的能力格式扩展:PoisonCap。核心是给每个能力(capability)加一个"毒化"状态标记。当内存被释放时,系统不是把指针置零,而是把对应的能力标记为中毒——指针还在,边界还在,但任何通过这个中毒能力访问内存的操作都会触发硬件异常。
问题是:毒化信息怎么传播?PoisonCap 的做法是利用 CHERI 已有的能力边界分层。上层分配器拥有整块内存的能力,下层分配器从上层获得一个受限的子能力。当上层分配器毒化了一个能力,下层分配器的所有派生能力也自动被毒化——不需要逐级通知。这保证了嵌套分配器场景下一整套子树的安全性。
在具体实现上,PoisonCap 可以替换 Cornucopia 的影子位图方案。释放后的内存自动清零,或者在读取前写入前触发陷阱。相比现有最优方案 Cornucopia,PoisonCap 在提供更强的 use-after-free 保护的同时,性能开销为零——不增加任何基础延迟。
不清楚的地方:毒化状态需要额外的硬件存储——具体需要多少额外的寄存器位和元数据空间?论文提到了"层级化"但没有详细分析多级分配器场景下毒化传播的时间维度开销。还有,毒化能力在缓存一致性协议下的行为没有讨论。
---
**参考文献**
1. Wang, Y., Woodruff, J., Mazzinghi, A., et al. (2026). *PoisonCap: Efficient Hierarchical Temporal Safety for CHERI*. arXiv:2605.13210 [cs.AR].
2. Watson, R. N. M., et al. (2015). *CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization*. IEEE S&P.
3. Woodruff, J., et al. (2024). *Cornucopia Reloaded: Efficient Temporal Memory Safety for CHERI*. ISCA.
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力