安全与隐私 · 观点 08

基于能力的内存安全:空间权限、生存期与撤销

限定指针的权限与证明其对象仍然存活,是两个不同的问题。

引用本文

AI 译文可能存在错误,请对照原文核实。

AI 辅助译文 · AI 译文可能存在错误,请对照原文核实。 阅读原文
数学符号、代码、参考文献身份和图内文字保留原始形式。

《基于能力的内存安全:空间权限、生存期与撤销》的概念性编辑插图
概念插图 · 内置 ImageGen · 非实验证据

摘要

基于能力的内存系统可以限制指针能够访问的内容以及能够执行的操作。这些空间与权限保证十分重要,但并不会自动确立对象生存期安全、应用程序授权,或针对所有侧信道的机密性。本综述借助 CHERI 的隔舱化研究、Cornucopia 以及 CHERI ISA 报告,考察边界与撤销之间的区分。一个小型能力模型检查边界、许可和分配代次,随后在仅检查边界的设计中展示一个陈旧指针见证例。两幅核算图量化了理想化的标签开销与隔离内存。由此形成的论点是,内存安全主张应明确说明分配粒度、生存期处理、可信代码以及兼容性边界。可执行示例属于解释性模型,并不仿真或认证 CHERI 硬件。

指针可以在空间上有效,却在时间上无效

即使某次分配已经结束,指针仍可能指向先前分配区域内的字节。如果一个新对象随后占用了同一区域,边界检查仍可能成功。该指针在空间上看似合理,但在时间上已经陈旧。这一区分解释了为何消除越界访问并不会自动消除释放后使用错误。

相关契约具有多个维度。空间安全约束地址范围。许可约束读取或写入等操作。来源与不可伪造性约束权限如何产生。时间安全约束该权限是否仍然指向存活对象。应用程序策略可能施加进一步限制,例如用户可以编辑哪份文档。因此,内存能力是权限的一个层次,而不是系统中所有授权决策的替代品。

原始研究区分了这些层次

CHERI 隔舱化论文描述了一种混合能力架构,支持更细粒度的权限以及软件隔舱边界。Cornucopia 通过面向撤销的设计处理 CHERI 堆的时间安全。第九版 ISA 报告则更为详尽地规定了架构层面的能力行为和表示选择。

不应将这些来源压缩为“仅靠能力标签就能解决所有内存错误”这一主张。时间安全研究之所以存在,是因为生存期管理需要额外机制。同样,架构检查的规范本身并不能证明围绕这些检查的所有分配器、外部函数接口或遗留组件都是安全的。我们采用刻意理想化的能力记录,以便在考察任何具体实现之前,清楚呈现不同的证明义务。 [1], [2], [3]

理想化的能力记录

用基地址、长度、许可集合和分配代次来表示能力。一次内存操作提供地址、访问长度和所需许可。空间谓词检查整个访问区间是否位于能力的区间之内。权限谓词检查许可。时间谓词将记录的代次与存活分配的代次进行比较。

该记录是解释性抽象,而不是 CHERI 能力的实际编码。尤其是,代次字段用于建模一种可能的生存期检查,而非声称该架构实现了这一确切方案。分离这些谓词,使有限范围的附录能够独立测试每一种失败。越界读取、通过只读权限写入以及使用陈旧代次访问,是不同的阴性对照。

陈旧指针见证例

在一个十六字节的区域中以第一代分配对象 A,并为其签发能力。释放 A,然后在同一区域中以第二代分配对象 B。旧能力仍然指明一个包含 B 的地址范围。仅检查边界的检查器会接受通过该能力进行的访问,而感知代次的玩具检查器会拒绝它。

这一见证例并未证明所有代次方案都足够充分。有限的代次计数器可能回绕,并发可能导致撤销与访问发生竞态,而复制的能力可能存在于分配器无法检查的位置。它证明的是一个更窄的结论:仅凭空间包含关系,无法区分占用相同字节的两个生存期。任何声称提供时间保证的方案,都必须解释其通过何种机制,防止陈旧权限在内存复用后重新变得有效。

权限的单调性使委托可供检查

一种有用的能力约束规则允许从较强权限派生较弱权限,例如缩小范围或移除许可。被授予只读切片的组件,不应能够凭空制造写入许可,也不应能够将该切片扩展至相邻对象。这种单调性使关于委托的局部推理成为可能。

周边软件仍然必须选择正确的初始边界。覆盖整个大型分配的能力,可能允许从一个逻辑子对象错误地访问另一个子对象,除非系统创建了足够窄的派生能力,或施加了额外的语言规则。保留宽泛权限的兼容路径也可能限制实际保护效果。因此,恰当的评估应衡量哪些访问实际受到边界限制,以及限制的粒度,而不应仅统计有多少指针采用了能力表示。 [1], [3]

撤销引入了工作与协调

撤销权限需要以某种方式阻止旧引用在未来被使用。可行策略包括延迟复用、跟踪生存期、检查可达能力,或组合多种机制。每种策略都会改变成本与假设。延迟复用方案减少了立即复用的机会,但其本身并不能证明,在任意设定的超时之后,某个陈旧引用已经消失。

Cornucopia 的相关性在于,它将时间保护视为包含分配器与撤销工作流程的系统机制。本综述并不复现其性能结果,而是提出可迁移到其他系统的问题:已释放区域何时可以安全复用,转换期间可能发生哪些竞态,哪些内存会被检查或跟踪,以及当回收无法跟上分配压力时会发生什么?这些问题同时决定了安全性与资源行为。 [2]

标签开销只是内存成本的一部分

如果一个理想化系统为每 g 字节数据额外存储一个标签位,则标签与数据的原始比例为八与 g 之积的倒数。当 g 等于十六字节时,该比例为百分之 0.78125。第一幅图通过改变粒度大小,展示这一基本核算关系。

这并不是 CHERI 或其他能力机器的总开销。更宽的指针、对齐、元数据、缓存组织、内存控制器设计以及软件布局,都可能主导或改变物理成本。压缩能力表示还涉及可表示性规则,而玩具公式并未对其建模。只有在明确标注为原始标签存储量时,这一计算才有用。将其表述为整个系统的内存开销,会混淆一个可见字段与整个设计。

隔离产生速率与时间乘积形式的资源预算

假设释放后的内存进入隔离区,直到回收过程能够安全地将其重新提供使用。如果内存以每秒 r 字节的稳定速率释放,平均隔离驻留时间为 W 秒,那么在稳定流模型中,保留量约为 rW 字节。当速率为每秒 100 百万字节、时间为十毫秒时,保留量为一百万字节。

第二幅图改变 r 和 W,并刻意省略分配器碎片化与突发性。突发可能产生远大于平均值公式所暗示的瞬时积压。如果回收吞吐量低于到达速率,则可能不存在稳态平均值。因此,部署研究应报告保留内存峰值、积压动态和分配延迟,并说明授权复用的条件。较低的平均开销无法弥补不安全的回收规则。

语言与外部代码边界仍然重要

内存安全语言仍可能与不安全的原生代码、设备缓冲区、序列化例程或手写汇编交互。能力系统或许能限制由此产生的某些错误,但边界必须保留预期权限。将宽泛能力传递给辅助组件,同时期望狭窄的应用程序策略仍然有效,是一项需要审查的策略决策。

同样,内存安全不会验证长度字段的业务含义,不会防止访问控制中的逻辑错误,也不会确立常数时间执行。这些是不同的性质。有用的迁移计划会盘点权限被扩大、转换、共享或跨生存期保留的位置,随后评估这些路径上的兼容性与性能,而不是假定构建成功就意味着安全转型已经完成。

采用独立阴性对照的评估

所提出的评估从可独立观测的空间违规、许可违规和时间违规开始。它包括相邻子对象、零长度访问与边界访问、地址复用后的陈旧引用、并发释放与访问,以及任何使用有限标识符的方案中的代次复用。在相同测试下,合法访问必须仍然有效。

对于真实硬件,应记录确切的 ISA、编译器模式、分配器、撤销配置以及遗留代码占比,并报告仍未被覆盖的失败。本地附录仅执行理想化记录检查器和地址复用见证例。其目的是使这些区分可复现,而不是声称获得了实测的安全性改善,或建立了生产环境能力实现的完整模型。

结论:明确说明生存期保证

能力提供了一种强有力的方式,使权限具体化并限制其传播。当所主张的性质被区分开来时,其贡献会更加清晰:边界、许可、不可伪造性、隔舱边界以及生存期安全。关于其中一个维度的结果,不应在未加说明的情况下代替其他维度。

陈旧指针见证例展示了仅检查边界时所缺失的信息。核算图展示了为何时间保护也会产生资源义务。因此,严谨的系统主张应将架构强制执行与分配器及回收语义相结合,指明仍需信任的接口,并报告与实际评估相同的保护模式下的成本。

已在本地执行 · 范围有限

边界、许可与理想代次生存期

采用数学整数和理想代次模型,并非 CHERI 仿真器。

4 项断言通过。 这些检查验证的是所提供的示例,而不是所引用的系统。

检查已记录的见证例
{
  "reused_address": 4,
  "old_generation": 1,
  "live_generation": 2
}

明确声明的分析模型

四个方程,明确的假设

a≤p ∧ p+ℓ≤a+na\le p\ \land\ p+\ell\le a+n

(1) 针对基地址 a、范围长度 n、访问起点 p 和长度 ell 的空间谓词,使用数学整数。真实实现必须避免检查中的算术溢出。

valid=bounds∧permission∧(gcap=glive)\mathrm{valid}=\mathrm{bounds}\land\mathrm{permission}\land(g_{\mathrm{cap}}=g_{\mathrm{live}})

(2) 理想化的代次感知能力模型;并不声称代次字段就是 CHERI 的实际编码。

ρtag=18g\rho_{\mathrm{tag}}=\frac{1}{8g}

(3) 每 g 字节数据对应一个标签位。这里只计算原始标签存储量。

Mquarantine≈rWM_{\mathrm{quarantine}}\approx rW

(4) 释放字节速率为 r、平均驻留时间为 W 的稳定平均流;排除突发与不稳定回收。

构造示例 · 可复现数据

检查定量论证

这些曲线根据已声明的模型计算得出,并非所引用研究中的观测结果。每幅图均附有数值数据和矢量版本。

一个标签位并不等于全部内存成本。仅核算原始位数;不包括物理存储粒度、ECC、能力宽度和元数据缓存。并非实测的 CHERI 开销。
图 1。一个标签位并不等于全部内存成本。 仅核算原始位数;不包括物理存储粒度、ECC、能力宽度和元数据缓存。并非实测的 CHERI 开销。
延迟复用会保留内存。稳定释放速率乘以固定隔离延迟。不包括重新分配、碎片化和突发释放;这不是 Cornucopia 基准测试。
图 2。延迟复用会保留内存。 稳定释放速率乘以固定隔离延迟。不包括重新分配、碎片化和突发释放;这不是 Cornucopia 基准测试。

哪些证据回答哪些问题?

性质强制执行示例独立问题
空间包含对访问区间施加边界限制对象生存期
许可限制只读或不可执行权限正确的应用程序策略
时间安全具有充分依据的撤销与复用协议并发与标识符复用
隔舱隔离范围狭窄的委托能力侧信道与用于兼容的宽泛权限

拟议的验证方案

这是一项拟议的评估设计。未开展生产系统或硬件基准测试。单独执行的有限模型记录于可执行检查部分。

  1. 分别测试有效访问、越界访问、许可被拒绝的访问以及生存期已过期的访问。
  2. 纳入一个会被仅检查边界的检查器错误接受的地址复用见证例。
  3. 检查范围缩小和许可移除的单调性。
  4. 在任何具体设计中,审查有限标识符回绕以及并发撤销竞态。
  5. 测量突发情况下的隔离积压、内存峰值和分配延迟。
  6. 盘点外部代码、分配器、设备和遗留权限的边界。

一手来源确立了什么

Robert N.M. Watson, Jonathan Woodruff, Peter G. Neumann et al. · 2015 [1]

贡献。 CHERI 的混合能力架构支持有界权限与隔舱化。

边界。 架构方法本身并不能确立所有应用程序层面的安全性质。

来源定位。 IEEE 论文身份信息与作者的 CHERI 出版记录。

Nathaniel Wesley Filardo, Brett F. Gutstein, Jonathan Woodruff et al. · 2020 [2]

贡献。 Cornucopia 将 CHERI 堆的时间安全视为撤销与分配问题。

边界。 其完整机制与评估不能由玩具代次检查替代。

来源定位。 摘要与时间安全设计。

Robert N. M. Watson, Peter G. Neumann, Jonathan Woodruff et al. · 2023 [3]

贡献。 CHERI ISA 第九版规定了架构层面的能力语义和表示选择。

边界。 ISA 规范不同于对已部署软件栈的验证。

来源定位。 剑桥大学技术报告 UCAM-CL-TR-987。

本分析的局限

  • 可执行模型用于解释,不仿真 CHERI 指令。
  • 原始标签公式不包括更宽的指针、对齐、缓存和物理实现开销。
  • 隔离公式假设速率稳定,并不能确立安全回收。
  • 未开展针对 CHERI 或 Cornucopia 的硬件安全测试或性能基准测试。

这是一篇聚焦于三个选定的基础性一手来源的分析性综述,包含原创的详细演算示例。它并非对截至 2026 年文献的穷尽性或系统性调查。来源访问情况与版本说明随参考文献一并记录。

可能改变结论的问题

  1. 真实访问以何种粒度受到边界限制:分配、对象,还是子对象?
  2. 在并发条件下,哪些证据能够确保撤销后的复用是安全的?
  3. 哪些兼容路径保留了比预期隔舱策略更宽泛的权限?

参考文献

  1. Robert N.M. Watson, Jonathan Woodruff, Peter G. Neumann et al.. CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization. 2015 IEEE Symposium on Security and Privacy (2015). 10.1109/sp.2015.9.
  2. Nathaniel Wesley Filardo, Brett F. Gutstein, Jonathan Woodruff et al.. Cornucopia: Temporal Safety for CHERI Heaps. 2020 IEEE Symposium on Security and Privacy (SP) (2020). 10.1109/sp40000.2020.00098.
  3. Robert N. M. Watson, Peter G. Neumann, Jonathan Woodruff et al.. Capability Hardware Enhanced RISC Instructions: CHERI Instruction-Set Architecture (Version 9). University of Cambridge Technical Report UCAM-CL-TR-987 (2023). 10.48456/tr-987.

来源 [1] 的访问情况。 一手记录、摘要及选定的可访问文本;并非对全文或补充材料的穷尽性审查。

来源 [2] 的访问情况。 一手记录、摘要及选定的可访问文本;并非对全文或补充材料的穷尽性审查。

来源 [3] 的访问情况。 一手记录、摘要及选定的可访问文本;并非对全文或补充材料的穷尽性审查。

书目身份信息已对照 Crossref 以及原始出版方、作者或机构记录核查。下方的来源访问与版本说明描述了核查范围;这并非穷尽性的全文审查。

作者身份与来源

由 Codex(AI)撰写并进行技术性自审。参考文献标明原始研究者;分析性构造与拟议评估设计归属于本文。

封面为 ImageGen 概念插图。技术图表根据已声明的模型或有限示例计算生成,并提供 Python 和 CSV。它们不是对已部署产品的测量,也不是复现的性能基准测试。

本地草稿没有独立同行评审或期刊录用记录。范围有限的可执行示例检查所述小型模型,并非对所引用系统的形式化验证。

委托研究综述 · v5. 引用本文 · 原始来源记录 · 发布记录