CHERI-D: Secure and efficient inline object ID for CHERI temporal memory safety
CHERI-D 是 CHERI 系统的一个架构扩展,它通过将内联对象 ID 与能力指针相关联来增强时间内存安全性,从而在显著降低以往基于软件的解决方案所带来的性能开销的同时,实现严格的释放后使用缓解。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
大局观: “二手车”问题
想象一下,你的计算机内存(RAM)是一个巨大的停车场。当程序需要存储数据时,它就在一个车位里停一辆车(一个对象)。当任务完成时,车开走了,留下一个空位。
问题在于内存安全性。有时,程序在尝试停入新车之前,忘记检查该车位是否为空。或者更糟的是,“悬空指针”(dangling pointer)就像一张仍然写着“此处有车”的旧地址纸条,尽管车已经开走了。如果黑客找到了这个旧地址,他们就可以把一辆恶意车辆停在原先旧车的位置,从而欺骗系统,让系统误以为那是原来的那辆车。这被称为**释放后使用(Use-After-Free)**漏洞。
长期以来,CHERI 系统(一个高科技计算机安全卫士)在确保你不会停错“车道”(空间安全性)方面表现出色,但在确保你不会停进一个“已经被腾空”的车位(时间安全性)方面却遇到了困难。
旧方案:“隔离区”
之前的最佳解决方案叫做 Cornucopia Reloaded,它的工作方式就像一个严格但行动缓慢的停车管理员。
- 当一辆车离开时,管理员不会立即允许任何人停入那个车位。
- 相反,该车位会被送入一个“隔离区”。
- 管理员必须绕着整个停车场走上一圈(进行一次“扫描/sweep”),以检查是否还有人拿着指向该车位的旧地址。
- 只有在扫描完成后,该车位才能被重新使用。
缺点: 这非常慢。“隔离区”很快就会填满,造成空间浪费。管理员必须不断地在停车场里走动,导致交通拥堵,并使整个系统出现延迟。
新方案:CHERI-D(“身份手环”)
作者提出了 CHERI-D,这是一种新的架构升级,它无需通过缓慢的“隔离区”即可解决上述问题。
把 CHERI-D 想象成给每辆车配备一个特殊的身份手环,并为每个停车位配备一个匹配的身份标签。
- 内联存储(Inline Storage): 它不是通过维护一份单独的“谁拥有什么”的列表(这会占用额外空间),而是将身份标签直接写在停车位本身上,利用那些通常不被使用的、车辆之间的微小缝隙。这被称为“内联”存储。这就像是直接把房间号写在门上,而不是保留一份单独的账本。
- 检查机制: 当程序试图访问一个位置时,硬件会立即检查:“手环上的 ID 与门上的 ID 是否匹配?”
- 匹配: 太棒了,你可以进入。
- 不匹配: 车已经移动或该位置已被重新分配。系统会立即停止程序并发出警报。
- 立即重用: 因为 ID 检查是即时的且内置于硬件中,所以停车位可以立即被重新使用。不再需要旧的“隔离区”。管理员不需要巡视整个停车场,只需检查门上的 ID 即可。
为什么这很重要
- 速度: 旧的方法(Cornucopia)就像是在允许你进入之前,必须等待保安走遍整栋大楼。CHERI-D 则像是一个能瞬间检查证件的旋转闸机。论文表明,这使得系统运行得更快,尤其是在处理大量创建和销毁小型对象的程序(如 Web 服务器)时。
- 安全性: 旧方法只能在长时间延迟之后提供保护。CHERI-D 则在位置被重新分配的一瞬间就提供了保护。它能捕捉到旧系统会遗漏的“释放后使用”攻击。
- 效率: 它不会浪费内存。通过利用数据之间微小的空隙(内部碎片)来存储这些 ID,它不需要额外的“影子内存”(即一份单独的标签列表)。
“世代(Generation)”概念
系统为每个位置使用一个计数器(一个 8 位 ID)。每当一个位置被重用时,ID 就会发生变化(就像一个世代编号)。
- 如果你持有一个旧 ID(第一代)并试图访问一个现在已经是第五代的车位,系统就会知道你使用的是过时的地图并拦截你。
- 系统可以在需要重置之前,循环使用 254 个不同的世代,这足以处理海量数据而不会耗尽编号。
他们测试了什么
研究人员在计算机模拟器(QEMU)和真实硬件芯片(FPGA)上构建了这个系统的原型。他们针对以下内容进行了测试:
- 安全性测试: 他们运行了 2,422 项专门用于破坏内存安全性的特定测试。CHERI-D 成功拦截并阻止了所有测试,包括“双重释放(Double Free)”和“释放后使用(Use-After-Free)”攻击。
- 性能测试: 他们运行了标准计算机基准测试(如 SPEC CPU)和现实世界的应用(如 SQLite 和 gRPC)。
- 结果: 在处理大量内存交换的程序(如 Omnetpp)中,旧系统的速度慢了 100% 以上。而 CHERI-D 仅比正常的、不安全的系统慢了约 1.6%。
- 结果: 它极大地减少了对内存的“流量”访问,因为它停止了那种持续性的停车场“扫描”行为。
总结
CHERI-D 就像是将停车场从缓慢的人工安全检查升级到了高速自动证件扫描。它将安全检查直接置于位置本身,允许车辆被立即重新分配,而无需等待保安巡逻整个停车场。这使得计算机在管理内存时更加快速、安全且高效。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。