论文标题

C的脂肪指针C的时间记忆安全

Fat Pointers for Temporal Memory Safety of C

论文作者

Zhou, Jie, Criswell, John, Hicks, Michael

论文摘要

时间内存安全错误,尤其是使用无及双免费错误,对C程序构成了主要的安全威胁。利用这些错误的现实世界利用使攻击者能够读取和写任意内存位置,从而造成灾难性的违反机密性,完整性和可用性。许多以前的解决方案改造了C的时间内存安全性,但它们要么都会产生高性能开销和/或错过检测某些类型的时间内存安全错误。 在本文中,我们提出了一种既高效又全面的时间记忆安全解决方案。具体而言,我们将检查C将C扩展到C,并带有时间安全的指针。这些是通过结合两种技术来实现的:脂肪指针和动态钥匙锁检查。我们表明,与提供相同级别的保护级别的脱节 - 米达塔方法相比,脂肪分子解决方案可显着改善运行时间和内存开销。借助经验计划数据和实践经验移植现实世界应用程序,我们还表明,我们的解决方案在向后兼容性方面是实用的,这是对脂肪指针的主要抱怨之一。

Temporal memory safety bugs, especially use-after-free and double free bugs, pose a major security threat to C programs. Real-world exploits utilizing these bugs enable attackers to read and write arbitrary memory locations, causing disastrous violations of confidentiality, integrity, and availability. Many previous solutions retrofit temporal memory safety to C, but they all either incur high performance overhead and/or miss detecting certain types of temporal memory safety bugs. In this paper, we propose a temporal memory safety solution that is both efficient and comprehensive. Specifically, we extend Checked C, a spatially-safe extension to C, with temporally-safe pointers. These are implemented by combining two techniques: fat pointers and dynamic key-lock checks. We show that the fat-pointer solution significantly improves running time and memory overhead compared to the disjoint-metadata approach that provides the same level of protection. With empirical program data and hands-on experience porting real-world applications, we also show that our solution is practical in terms of backward compatibility -- one of the major complaints about fat pointers.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源