MESH: A Memory-Efficient Safe Heap for C/C plus

被引:1
|
作者
Vintila, Emanuel Q. [1 ]
Zieris, Philipp [1 ]
Horsch, Julian [1 ]
机构
[1] Fraunhofer AISEC, Garching, Germany
关键词
memory safety; unsafe programming languages; buffer overflows; pointer tagging; dangling pointers; use-after-free;
D O I
10.1145/3465481.3465760
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
While memory corruption bugs stemming from the use of unsafe programming languages are an old and well-researched problem, the resulting vulnerabilities still dominate real-world exploitation today. Various mitigations have been proposed to alleviate the problem, mainly in the form of language dialects, static program analysis, and code or binary instrumentation. Solutions like Adress-Sanitizer (ASan) and Softbound/CETS have proven that the latter approach is very promising, being able to achieve memory safety without requiring manual source code adaptions, albeit suffering substantial performance and memory overheads. While performance overhead can be seen as a flexible constraint, extensive memory overheads can be prohibitive for the use of such solutions in memory-constrained environments. To address this problem, we propose MESH, a highly memory-efficient safe heap for C/C++. With its constant, very small memory overhead (configurable up to 2 MB on x86-64) and constant complexity for pointer access checking, MESH offers efficient, byte-precise spatial and temporal memory safety for memory-constrained scenarios. Without jeopardizing the security of safe heap objects, MESH is fully compatible with existing code and uninstrumented libraries, making it practical to use in heterogeneous environments. We show the feasibility of our approach with a full LLVM-based prototype supporting both major architectures, i.e., x86-64 and ARM64, in a Linux runtime environment. Our prototype evaluation shows that, compared to ASan and Softbound/CETS, MESH can achieve huge memory savings while preserving similar execution performance.
引用
收藏
页数:10
相关论文
共 50 条
  • [31] A Comprehensive Detection of Memory Corruption Vulnerabilities for C/C plus plus Programs
    Gao, Yuhan
    Chen, Liwei
    Shi, Gang
    Zhang, Fei
    2018 IEEE INT CONF ON PARALLEL & DISTRIBUTED PROCESSING WITH APPLICATIONS, UBIQUITOUS COMPUTING & COMMUNICATIONS, BIG DATA & CLOUD COMPUTING, SOCIAL COMPUTING & NETWORKING, SUSTAINABLE COMPUTING & COMMUNICATIONS, 2018, : 354 - 360
  • [32] Differentiable Slimming for Memory-Efficient Transformers
    Penkov, Nikolay
    Balaskas, Konstantinos
    Rapp, Martin
    Henkel, Joerg
    IEEE EMBEDDED SYSTEMS LETTERS, 2023, 15 (04) : 186 - 189
  • [33] Memory-Efficient Hashed Page Tables
    Stojkovic, Jovan
    Mantri, Namrata
    Skarlatos, Dimitrios
    Xu, Tianyin
    Torrellas, Josep
    2023 IEEE INTERNATIONAL SYMPOSIUM ON HIGH-PERFORMANCE COMPUTER ARCHITECTURE, HPCA, 2023, : 1221 - 1235
  • [34] A memory-efficient progressive JPEG decoder
    Lee, Kun-Bin
    Ju, Chi-Cheng
    2007 INTERNATIONAL SYMPOSIUM ON VLSI DESIGN, AUTOMATION AND TEST (VLSI-DAT), PROCEEDINGS OF TECHNICAL PAPERS, 2007, : 8 - +
  • [35] Simple and safe SQL queries with C plus plus templates
    Gil, Joseph
    Lenz, Keren
    SCIENCE OF COMPUTER PROGRAMMING, 2010, 75 (07) : 573 - 595
  • [36] Fast, memory-efficient retrograde algorithms
    Wu, R
    Beal, D
    ICGA JOURNAL, 2001, 24 (03) : 147 - 159
  • [37] Linear time and memory-efficient computation
    Regan, KW
    SIAM JOURNAL ON COMPUTING, 1996, 25 (01) : 133 - 168
  • [38] Memory-efficient adaptive Huffman coding
    Pigeon, S
    Bengio, Y
    DR DOBBS JOURNAL, 1998, 23 (10): : 131 - +
  • [39] A memory-efficient elitist genetic algorithm
    Ahn, CW
    Kim, KP
    Ramakrishna, RS
    PARALLEL PROCESSING AND APPLIED MATHEMATICS, 2004, 3019 : 552 - 559
  • [40] Memory-Efficient Backpropagation Through Time
    Gruslys, Audrunas
    Munos, Remi
    Danihelka, Ivo
    Lanctot, Marc
    Graves, Alex
    ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 29 (NIPS 2016), 2016, 29