下载PDF摘要:即使在对内存安全漏洞的检测和预防进行了几十年的研究之后,内存安全漏洞仍然是安全漏洞中的头号漏洞。针对C/C++提出了各种缓解措施,从语言方言到仪器。其中,基于编译器的指令插入特别具有优越性,不需要手动修改代码,并且能够实现精确的内存安全。不幸的是,现有的基于编译器的解决方案在很多方面都存在缺陷,包括性能,但也包括可用性和内存安全保证。硬件的新发展有助于提高基于编译器的内存安全的性能和安全性。ARM指针认证,在ARMv8中添加。3体系结构,旨在实现硬件辅助控制流的完整性。但由于其操作相对通用,它还支持其他更全面的硬件支持的运行时完整性方法。因此,我们提出了PACSafe,一种基于ARMPointer身份验证的内存安全方法。PACSafe使用指针签名来改进C/C++程序的完整内存安全性,保护堆、堆栈和全局文件不受时间和空间漏洞的影响。我们提供了一个完整的、基于LLVM的原型实现,在M1 MacBook Pro上运行,即在实际的ARMv8上运行。3.硬件。我们的原型评估表明,在现实条件下,该系统的性能优于类似的方法。这一点,再加上它与未安装的库的兼容性以及针对元数据攻击的加密保护,使得PACSafe成为改进内存安全toC/C++程序的可行解决方案。