Skip to main content
QUICK REVIEW

[论文解读] RV-CURE: A RISC-V Capability Architecture for Full Memory Safety

Yonghae Kim, Anurag Kar|arXiv (Cornell University)|Aug 5, 2023
Security and Verification in ComputingComputer Science被引用 3
一句话总结

RV-CURE 是一种 RISC-V 能力架构,通过数据指针标记(DPT)实现完整的内存安全,DPT 是一种编译器级技术,将指针标记嵌入指针的未使用高位,并通过硬件加速的能力检查来强制执行。它将轻量级硬件扩展集成到 BOOM RISC-V 核心中,在 SPEC 2017 C/C++ 工作负载上仅带来 10.8% 的平均性能下降。

ABSTRACT

Despite decades of efforts to resolve, memory safety violations are still persistent and problematic in modern systems. Various defense mechanisms have been proposed, but their deployment in real systems remains challenging because of performance, security, or compatibility concerns. In this paper, we propose RV-CURE, a RISC-V capability architecture that implements full-system support for full memory safety. For capability enforcement, we first propose a compiler technique, data-pointer tagging (DPT), applicable to protecting all memory types. It inserts a pointer tag in a pointer address and associates that tag with the pointer's capability metadata. DPT enforces a capability check for every memory access by a tagged pointer and thereby prevents illegitimate memory accesses. Furthermore, we investigate and present lightweight hardware extensions for DPT based on the open-source RISC-V BOOM processor. We observe that a capability-execution pipeline can be implemented in parallel with the existing memory-execution pipeline without intrusive modifications. With our seamless hardware integration, we achieve low-cost capability checks transparently performed in hardware. Altogether, we prototype RV-CURE as a synthesized RTL processor and conduct full-system evaluations on FPGAs running Linux OS. Our evaluations show that RV-CURE achieves strong memory safety at a 10.8% slowdown across the SPEC 2017 C/C++ workloads.

研究动机与目标

  • 解决现代系统中持续存在的内存安全违规问题,该问题仍是安全漏洞的主要原因。
  • 克服先前软件和硬件防御方案在性能开销高、兼容性差或安全覆盖不全方面的局限性。
  • 设计一种实用的全系统内存安全解决方案,在保持源代码和二进制兼容性的同时,强制实现空间和时间上的内存安全。
  • 通过编译器与硬件协同设计,实现高效、低开销的能力强制,避免对现有软件栈进行侵入式修改。

提出的方法

  • 提出数据指针标记(DPT),一种广义的指针标记技术,将能力元数据存储在所有内存类型(栈、堆、全局)指针的未使用高位中。
  • 使用软件管理的能力元数据表(CMT)来存储每个对象的能力信息,包括边界和权限,并与指针标记关联。
  • 将轻量级硬件扩展集成到 RISC-V BOOM 核心中,以在内存执行流水线并行执行原子能力检查,最大限度减少性能影响。
  • 在涉及标记指针的每次内存访问时强制执行能力检查,通过硬件陷阱拒绝非法访问。
  • 通过在对象释放时从 CMT 中移除元数据,同时保留指针上的标记,实现时间安全,确保悬空指针访问在运行时失败。
  • 利用现有的 RISC-V 指令集和流水线结构,实现无缝集成,无需修改操作系统、编译器或运行时。

实验结果

研究问题

  • RQ1指针标记方法是否能在不扩展指针大小的前提下,实现对所有内存类型(栈、堆、全局)的完整内存安全?
  • RQ2是否可以以极低性能开销实现硬件加速的能力检查,且无需对处理器流水线进行侵入式修改?
  • RQ3是否可以在保持与现有软件栈的源代码和二进制兼容性的同时实现完整的内存安全?
  • RQ4与现有的纯软件或纯硬件解决方案相比,硬件优化、编译器辅助的能力系统在性能上表现如何?
  • RQ5所提出的机制是否能有效防止空间安全违规(越界访问)和时间安全违规(释放后使用)?

主要发现

  • RV-CURE 通过数据指针标记实现每对象能力检查,实现了对所有内存类型——栈、堆和全局——的完整内存安全。
  • DPT 的硬件扩展无缝集成到 RISC-V BOOM 核心中,使能力检查与内存流水线并行执行,且未改变核心的基本结构。
  • 该系统在 SPEC 2017 C/C++ 工作负载上仅造成 10.8% 的平均性能下降,显著低于纯软件方案(如 AddressSanitizer)的 73% 性能下降。
  • 该方法通过避免修改指令集或指针大小,保持了源代码和二进制兼容性,依赖编译器插入的标记和软件管理的 CMT 实现。
  • 时间内存安全通过在释放时从 CMT 中移除元数据来强制执行,无需基于撤销的元数据扫描;这使得悬空指针在访问时即失效。
  • 该解决方案兼容多线程环境,因为 CMT 在线程间共享,且缓存一致性机制(如 TSO)可处理跨核心的元数据一致性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。