CryptSan: Leveraging ARM Pointer Authentication for Memory Safety in C/C plus

被引:2
|
作者
Hohentanner, Konrad [1 ]
Zieris, Philipp [1 ]
Horsch, Julian [1 ]
机构
[1] Fraunhofer AISEC, Garching, Germany
关键词
memory safety; unsafe programming languages; pointer authentication; buffer overflows; use-after-free; CHECKING;
D O I
10.1145/3555776.3577635
中图分类号
TP39 [计算机的应用];
学科分类号
081203 ; 0835 ;
摘要
Memory safety bugs remain in the top ranks of security vulnerabilities, even after decades of research on their detection and prevention. Various mitigations have been proposed for C/C++, ranging from language dialects to instrumentation. Among these, compilerbased instrumentation is particularly promising, not requiring manual code modifications and being able to achieve precise memory safety. Unfortunately, existing compiler-based solutions compromise in many areas, including performance but also usability and memory safety guarantees. New developments in hardware can help improve performance and security of compiler-based memory safety. ARM Pointer Authentication, added in the ARMv8.3 architecture, is intended to enable hardware-assisted Control Flow Integrity (CFI). But since its operations are generic, it also enables other, more comprehensive hardware-supported runtime integrity approaches. As such, we propose CryptSan, a memory safety approach based on ARM Pointer Authentication. CryptSan uses pointer signatures to retrofit memory safety to C/C++ programs, protecting heap, stack, and globals against temporal and spatial vulnerabilities. We present a full LLVM-based prototype implementation, running on an M1 MacBook Pro, i.e., on actual ARMv8.3 hardware. Our prototype evaluation shows that the system outperforms similar approaches under real-world conditions. This, together with its interoperability with uninstrumented libraries and cryptographic protection against attacks on metadata, makes CryptSan a viable solution for retrofitting memory safety to C/C++ programs.
引用
收藏
页码:1530 / 1539
页数:10
相关论文
共 50 条
  • [31] Towards Transactional Memory Semantics for C plus
    Shpeisman, Tatiana
    Adl-Tabatabai, Ali-Reza
    Geva, Robert
    Ni, Yang
    Welc, Adam
    SPAA'09: PROCEEDINGS OF THE TWENTY-FIRST ANNUAL SYMPOSIUM ON PARALLELISM IN ALGORITHMS AND ARCHITECTURES, 2009, : 49 - 58
  • [32] Simplifying Transactional Memory Support in C plus
    Zardoshti, Pantea
    Zhou, Tingzhe
    Balaji, Pavithra
    Scott, Michael L.
    Spear, Michael
    ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION, 2019, 16 (03)
  • [33] Memory Errors and Memory Safety: C as a Case Study
    Van Oorschot P.C.
    Piessens F.
    IEEE Security and Privacy, 2023, 21 (02): : 70 - 76
  • [34] Boosting the Precision of Virtual Call Integrity Protection with Partial Pointer Analysis for C plus
    Fan, Xiaokang
    Sui, Yulei
    Liao, Xiangke
    Xue, Jingling
    PROCEEDINGS OF THE 26TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON SOFTWARE TESTING AND ANALYSIS (ISSTA'17), 2017, : 329 - 340
  • [35] Towards Standardization of AV Safety: C plus plus Library for Responsibility Sensitive Safety
    Gassmann, Bernd
    Oboril, Fabian
    Buerkle, Cornelius
    Liu, Shuang
    Yan, Shoumeng
    Elli, Maria Soledad
    Alvarez, Ignacio
    Aerrabotu, Naveen
    Jaber, Suhel
    van Beek, Peter
    Iyer, Darshan
    Weast, Jack
    2019 30TH IEEE INTELLIGENT VEHICLES SYMPOSIUM (IV19), 2019, : 2265 - 2271
  • [36] C plus plus Memory Detection Tool Based on Dynamic Instrumentation
    Fu, Siran
    Cui, Baojiang
    Guo, Tao
    Song, Xuyan
    ADVANCES IN INTERNET, DATA & WEB TECHNOLOGIES, 2018, 17 : 663 - 674
  • [37] CompCertS: A Memory-Aware Verified C Compiler Using a Pointer as Integer Semantics
    Frédéric Besson
    Sandrine Blazy
    Pierre Wilke
    Journal of Automated Reasoning, 2019, 63 : 369 - 392
  • [38] CompCertS: A Memory-Aware Verified C Compiler Using a Pointer as Integer Semantics
    Besson, Frederic
    Blazy, Sandrine
    Wilke, Pierre
    JOURNAL OF AUTOMATED REASONING, 2019, 63 (02) : 369 - 392
  • [39] CompCertS: A Memory-Aware Verified C Compiler Using Pointer as Integer Semantics
    Besson, Frederic
    Blazy, Sandrine
    Wilke, Pierre
    INTERACTIVE THEOREM PROVING (ITP 2017), 2017, 10499 : 81 - 97
  • [40] Fat Pointers for Temporal Memory Safety of C
    Zhou, Jie
    Criswell, John
    Hicks, Michael
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2023, 7 (OOPSLA):