中文

PULP:基于程序计数器与数据存储器地址的进程内隔离

密码学与安全 2018-04-11 v1

摘要

大量进程内漏洞归咎于各类越界内存访问。以往的防护方法主要基于软件检查并伴随性能开销,而传统硬件保护机制仅对进程间内存访问有效。本文提出一种基于硬件的新型进程内隔离系统 PULP(Protection by User Level Partition,用户级分区保护)。PULP 通过关联程序计数器与虚拟内存地址来修改处理器核,以实现进程内数据隔离。PULP 将程序划分为两个不同部分,一为可靠部分称为主函数,另一为不可靠部分称为次函数,其可访问内存范围可通过 API 配置。PULP 在执行次函数中的加载/存储操作时自动检查内存边界。我们实现了基于 RISC-V 的 FPGA 原型,功能测试表明 PULP 可有效防止进程内缺陷,包括 Heartbleed 及其他缓冲区溢出漏洞等。PULP 的总运行时开销可忽略不计,因为除配置 API 外无额外运行时开销。我们将 LIBC 函数视为次函数,运行 SPEC2006 评估平均性能。实验时序结果显示,运行 bzip2、mcf 和 libquantum 时,PULP 的运行时开销很低(小于 0.1%)。分析还表明 PULP 可有效防范威胁几乎所有乱序处理器的最新“Spectre”缺陷。

关键词

引用

@article{arxiv.1804.03379,
  title  = {PULP: Inner-process Isolation based on the Program Counter and Data Memory Address},
  author = {Xiaojing Zhu and Mingyu Chen and Yangyang Zhao and Zonghui Hong and Yunge Guo},
  journal= {arXiv preprint arXiv:1804.03379},
  year   = {2018}
}