中文

CGuard:面向 C 语言的高效空间安全保护

密码学与安全 2023-08-30 v3 编程语言 软件工程

摘要

空间安全违规是许多安全攻击和应用程序异常行为的根本原因。现有的强制空间安全技术大致在对象或指针粒度上工作。基于对象的方法往往带来高 CPU 开销,而基于指针的方法则同时带来高 CPU 与内存开销。SGXBounds 作为一种基于对象的方法,是迄今为止为对象提供完整越界保护的最高效技术。然而,该方法的一个主要缺陷是无法支持大于 32 位的地址空间。本文中我们提出 CGuard,一种为 C 应用程序提供对象边界保护、开销与 SGXBounds 相当且不限制应用程序地址空间的工具。CGuard 将边界信息存储在对象基址之前,并在 x86_64 架构中可用的虚拟地址空闲位中编码基址的相对偏移。对于无法存入空闲位的对象,CGuard 使用自定义内存布局,使其仅需一次内存访问即可找到对象基址。我们的研究在 SPEC CPU2017 基准套件中的 gcc 与 x264 基准以及 Phoenix 基准套件中的 string_match 基准中发现了空间安全违规。SPEC CPU2017 与 Phoenix 基准套件的执行时间开销分别为 42% 与 26%,而在 CPU 完全饱和时 Apache 网络服务器的吞吐量下降为 30%。这些结果表明 CGuard 可在保持合理效率的同时非常有效。

关键词

引用

@article{arxiv.2107.10533,
  title  = {CGuard: Efficient Spatial Safety for C},
  author = {Piyus Kedia and Rahul Purandare and Udit Kumar Agarwal and Rishabh},
  journal= {arXiv preprint arXiv:2107.10533},
  year   = {2023}
}