CPU registers are small discrete storage units, used to hold temporary data and instructions within the CPU. Registers are not addressable in the same way memory is, which makes them immune from memory attacks and manipulation by other means. In this paper, we take advantage of this to provide a protection mechanism for critical program data; both active local variables and control objects on the stack. This protection effectively eliminates the threat of control- and data-oriented attacks, even by adversaries with full knowledge of the active stack. Our solution RegGuard, is a compiler register allocation strategy that utilises the available CPU registers to hold critical variables during execution. Unlike conventional allocations schemes, RegGuard prioritises the security significance of a program variable over its expected performance gain. Our scheme can deal effectively with saved registers to the stack, i.e., when the compiler needs to free up registers to make room for the variables of a new function call. With RegGuard, critical data objects anywhere on the entire stack are effectively protected from corruption, even by adversaries with arbitrary read and write access. While our primary design focus is on security, performance is very important for a scheme to be adopted in practice. RegGuard is still benefiting from the performance gain normally associated with register allocations, and the overhead is within a few percent of other unsecured register allocation schemes for most cases. We present detailed experiments that showcase the performance of RegGuard using different benchmark programs and the C library on ARM64 platform.


翻译:CPU 登记册是小型的离散存储器,用于在CPP 内持有临时数据和指示。 登记册无法以同样的内存方式处理,从而使它们免受内存攻击和用其他手段操纵。 在本文中,我们利用这个机制为关键程序数据提供保护机制;活跃的本地变量和堆堆中的控制对象;这种保护有效消除了控制和面向数据的袭击威胁,即使完全了解活跃堆堆叠的对手也能够完全了解活跃堆叠的堆叠,即使这种保护有效消除了控制和面向数据的袭击威胁,甚至消除了这种威胁。 我们的解决方案RegGuard是一个汇编者登记册分配分配战略,利用现有的CPU登记册来保持执行期间的关键变量。 与常规分配计划不同,RegGuard 将一个方案的安全重要性放在一个方案变量的预期绩效增益上。 我们的计划可以有效地处理保存在堆叠中的登记册,也就是说,当汇编者需要腾出登记册空间,为新功能的变量调出空间的变量空间。由于ReGuard,整个堆中任何地方的关键数据对象都能有效防止腐败,甚至任意阅读和写访问的对手。 虽然我们的主要设计重点是安全,但我们的主要设计重点仍然是,但我们的主要设计重点是,但业绩业绩业绩的绩效非常重要非常重要非常重要,对于一个计划非常重要的绩效计划对于正常分配计划非常重要,在日常分配中进行,正在正在正在操作中进行。

0
下载
关闭预览

相关内容

专知会员服务
56+阅读 · 2021年4月12日
专知会员服务
44+阅读 · 2020年10月31日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
76+阅读 · 2020年7月26日
【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
85+阅读 · 2020年5月11日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
已删除
将门创投
3+阅读 · 2017年9月12日
Weight Poisoning Attacks on Pre-trained Models
Arxiv
5+阅读 · 2020年4月14日
VIP会员
相关VIP内容
专知会员服务
56+阅读 · 2021年4月12日
专知会员服务
44+阅读 · 2020年10月31日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
76+阅读 · 2020年7月26日
【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
85+阅读 · 2020年5月11日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
相关资讯
已删除
将门创投
3+阅读 · 2017年9月12日
Top
微信扫码咨询专知VIP会员