论文标题
S3Library:使用兼容安全库自动消除C/C ++缓冲区溢出
S3Library: Automatically Eliminating C/C++ Buffer Overflow using Compatible Safer Libraries
论文作者
论文摘要
C11的附件K(界限检查接口)最近引入了一组替代功能,以减轻缓冲区溢出,主要是由字符串/内存功能引起的。但是,兼容性差会限制其采用。失败遗忘的计算可以消除攻击者可以利用内存错误来破坏地址空间并显着增加系统可用性的可能性。 在本文中,我们介绍了S3Library(饱和 - 记忆访问更安全的字符串库),该库与标准C库在功能签名方面兼容。我们的技术会用更安全的版本自动替换不安全的内存/字符串功能,这些版本可以通过无限内存执行界限并消除缓冲区溢出。 S3Library采用MinFat,这是一种非常紧凑的指针表示,较少的原理是将元数据编码为指针内未使用的上部位。此外,S3Library利用饱和内存访问来消除无限填充区域的非法内存访问。即使进行了越野访问权限,故障程序也不会中断。我们在X86-64的LLVM框架内实施我们的方案,并评估我们的正确性,安全性,运行时性能和可用性的方法。
Annex K of C11, bounds-checking interfaces, recently introduced a set of alternative functions to mitigate buffer overflows, primarily those caused by string/memory functions. However, poor compatibility limits their adoption. Failure oblivious computing can eliminate the possibility that an attacker can exploit memory errors to corrupt the address space and significantly increase the availability of systems. In this paper, we present S3Library (Saturation-Memory-Access Safer String Library), which is compatible with the standard C library in terms of function signature. Our technique automatically replaces unsafe deprecated memory/string functions with safer versions that perform bounds checking and eliminate buffer overflows via boundless memory. S3Library employs MinFat, a very compact pointer representation following the Less is More principle, to encode metadata into unused upper bits within pointers. In addition, S3Library utilizes Saturation Memory Access to eliminate illegal memory accesses into boundless padding area. Even if an out-of-bounds access is made, the fault program will not be interrupted. We implement our scheme within the LLVM framework on X86-64 and evaluate our approach on correctness, security, runtime performance and availability.