CryptSan:利用ARM指针认证实现C/C++内存安全
密码学与安全
2023-05-12 v2 编程语言
软件工程
摘要
内存安全漏洞在数十年的检测与预防研究之后,仍位居安全漏洞前列。针对C/C++已提出多种缓解措施,从语言方言到插桩不一而足。其中,基于编译器的插桩尤为可观,其不需手动修改代码且能实现精确的内存安全。遗憾的是,现有基于编译器的方案在诸多方面存在妥协,包括性能以及可用性与内存安全保证。硬件的新进展可助益基于编译器的内存安全的性能与安全性。ARM指针认证(添加于ARMv8.3架构)旨在实现硬件辅助的控制流完整性(CFI)。但因其操作为通用性,其亦支持其他更全面的硬件支撑运行时完整性方法。据此,我们提出CryptSan,一种基于ARM指针认证的存储安全方法。CryptSan利用指针签名将内存安全回溯应用于C/C++程序,保护堆、栈与全局变量免受暂时与空间漏洞之害。我们给出了完整的基于LLVM的原型实现,运行于M1 MacBook Pro,即实际ARMv8.3硬件之上。我们的原型评估显示,该系统在真实条件下优于类似方法。这一点,连同其与未插桩库的互操作性及对元数据攻击的密码学保护,使CryptSan成为向C/C++程序回溯内存安全的可行方案。
引用
@article{arxiv.2202.08669,
title = {CryptSan: Leveraging ARM Pointer Authentication for Memory Safety in C/C++},
author = {Konrad Hohentanner and Philipp Zieris and Julian Horsch},
journal= {arXiv preprint arXiv:2202.08669},
year = {2023}
}
备注
Publication in The 38th ACM/SIGAPP Symposium on Applied Computing (SAC '23)