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

Emanuel Q. Vintila, Philipp Zieris, Julian Horsch
{"title":"MESH: A Memory-Efficient Safe Heap for C/C++","authors":"Emanuel Q. Vintila, Philipp Zieris, Julian Horsch","doi":"10.1145/3465481.3465760","DOIUrl":null,"url":null,"abstract":"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 AdressSanitizer (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.","PeriodicalId":417395,"journal":{"name":"Proceedings of the 16th International Conference on Availability, Reliability and Security","volume":"108 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-08-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 16th International Conference on Availability, Reliability and Security","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3465481.3465760","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1

Abstract

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 AdressSanitizer (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.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
面向C/ c++的内存高效安全堆
虽然由于使用不安全编程语言而导致的内存损坏bug是一个古老且研究得很透彻的问题,但由此产生的漏洞在当今的现实世界中仍然占主导地位。为了缓解这个问题,已经提出了各种各样的缓解方法,主要是以语言方言、静态程序分析以及代码或二进制工具的形式。像addresssanitizer (ASan)和Softbound/ cts这样的解决方案已经证明,后一种方法非常有前途,能够在不需要手动修改源代码的情况下实现内存安全,尽管会带来很大的性能和内存开销。虽然性能开销可以看作是一种灵活的约束,但是在内存受限的环境中使用这种解决方案时,大量的内存开销可能会令人望而却步。为了解决这个问题,我们提出了MESH,一个用于C/ c++的高内存效率的安全堆。凭借其恒定的、非常小的内存开销(在x86-64上可配置为2 MB)和指针访问检查的恒定复杂性,MESH为内存受限的场景提供了高效的、字节精确的空间和时间内存安全性。在不危及安全堆对象的安全性的情况下,MESH与现有代码和未检测的库完全兼容,使其可以在异构环境中使用。我们用一个完整的基于llvm的原型在Linux运行时环境中支持两种主要架构(即x86-64和ARM64)来展示我们方法的可行性。我们的原型评估表明,与ASan和Softbound/ cts相比,MESH可以在保持类似执行性能的同时节省大量内存。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Fighting organized crime by automatically detecting money laundering-related financial transactions Template Protected Authentication based on Location History and b-Bit MinHash Structuring a Cybersecurity Curriculum for Non-IT Employees of Micro- and Small Enterprises Privacy in Times of COVID-19: A Pilot Study in the Republic of Ireland Location Security under Reference Signals’ Spoofing Attacks: Threat Model and Bounds
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1