Temporal memory corruptions are commonly exploited software vulnerabilities that can lead to powerful attacks. Despite significant progress made by decades of research on mitigation techniques, existing countermeasures fall short due to either limited coverage or overly high overhead. Furthermore, they require external mechanisms (e.g., spatial memory safety) to protect their metadata. Otherwise, their protection can be bypassed or disabled. To address these limitations, we present robust points-to authentication, a novel runtime scheme for detecting all kinds of temporal memory corruptions. We built a prototype system, called PTAuth, that realizes this scheme on ARM architectures. PTAuth contains a customized compiler for code analysis and instrumentation and a runtime library for performing the points-to authentication as a protected program runs. PTAuth leverages the Pointer Authentication Code (PAC) feature, provided by the ARMv8.3 and later CPUs, which serves as a simple hardware-based encryption primitive. PTAuth uses minimal in-memory metadata and protects its metadata without requiring spatial memory safety. We report our evaluation of PTAuth in terms of security, robustness and performance using 150 vulnerable programs from Juliet test suite and the SPEC CPU2006 benchmarks. PTAuth detects all three categories of heap-based temporal memory corruptions, generates zero false alerts, and slows down program execution by 26% (this number was measured based on software-emulated PAC; it is expected to decrease to 20% when using hardware-based PAC). We also show that PTAuth incurs 2% memory overhead thanks to the efficient use of metadata.
翻译:尽管数十年的减缓技术研究取得了显著进展,但现有的应对措施却因覆盖范围有限或管理管理费用过高而出现不足。此外,它们需要外部机制(如空间内存安全)来保护元数据。否则,它们的保护可以被绕过或禁用。为了应对这些限制,我们提出了强有力的点数到验证,这是一个用于探测各种时间内存腐败的新运行时间机制。我们建立了一个称为PTAUT的原型系统,在ARM结构上实现了这一计划。PTAuth包含一个定制的代码分析和仪器化汇编器,以及一个运行受保护程序进行点认证的运行时间库。PTAUth利用了点定点验证码(PAC)的功能,由ARMV8.3和后来的CPU提供,作为简单的硬件加密原始。PTAuth使用最低限度的元元数据,保护其元数据不需要空间内存安全。我们报告在安全、坚固度和性业绩方面对PTAuth的评估,使用150个脆弱程序来进行匹配。 PATUTAPS使用S的快速度测试,而S的系统则通过S-2010年的所有时间-CUPUBS 测试显示了20%