英特尔MPX解释:英特尔MPX和基于软件的边界检查方法的实证研究
Intel MPX Explained: An Empirical Study of Intel MPX and Software-based Bounds Checking Approaches
摘要:
内存安全违规是用不安全语言(如C/C++)编写的系统软件的可靠性和安全漏洞的普遍原因。不幸的是,所有现有的基于软件的解决方案,这个问题表现出高性能的开销,阻止他们在生产运行中广泛采用。为了解决这个问题,英特尔最近发布了一个新的ISA扩展-内存保护扩展(英特尔MPX),这是一个硬件辅助的全栈解决方案,可以防止内存安全违规。在这项工作中,我们对英特尔MPX架构进行了详尽的研究,以了解其优势和注意事项。我们的研究基于三个方面:(a)性能开销,(b)安全保证,(c)可用性问题。为了正确看待我们的结果,我们将英特尔MPX与三种主要的基于软件的方法进行了比较:(1)trip-wire - AddressSanitizer,(2)基于对象的- SAFECode,以及(3)基于指针的- SoftBound。我们的主要结论是,英特尔MPX是一项很有前途的技术,但目前还不适合广泛采用。英特尔MPX的性能开销仍然很高(平均约为50%),并且支持基础架构存在可能导致编译或运行时错误的错误。此外,我们还展示了英特尔MPX的设计局限性:它无法检测时间错误,在多线程代码中可能会出现误报和漏报,而且它对内存布局的限制要求对某些程序进行大量代码更改。
英文摘要:
Memory-safety violations are a prevalent cause of both reliability and security vulnerabilities in systems software written in unsafe languages like C/C++. Unfortunately, all the existing software-based solutions to this problem exhibit high performance overheads preventing them from wide adoption in production runs. To address this issue, Intel recently released a new ISA extension - Memory Protection Extensions (Intel MPX), a hardware-assisted full-stack solution to protect against memory safety violations. In this work, we perform an exhaustive study of the Intel MPX architecture to understand its advantages and caveats. We base our study along three dimensions: (a) performance overheads, (b) security guarantees, and (c) usability issues. To put our results in perspective, we compare Intel MPX with three prominent software-based approaches: (1) trip-wire - AddressSanitizer, (2) object-based - SAFECode, and (3) pointer-based - SoftBound. Our main conclusion is that Intel MPX is a promising technique that is not yet practical for widespread adoption. Intel MPX's performance overheads are still high (roughly 50% on average), and the supporting infrastructure has bugs which may cause compilation or runtime errors. Moreover, we showcase the design limitations of Intel MPX: it cannot detect temporal errors, may have false positives and false negatives in multithreaded code, and its restrictions on memory layout require substantial code changes for some programs.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。