中文

S3Library:利用兼容的安全库自动消除C/C++缓冲区溢出

密码学与安全 2020-04-21 v1

摘要

C11的附录K(边界检查接口)近期引入了一组替代函数以缓解缓冲区溢出,主要是那些由字符串/内存函数引起的溢出。然而,较差的兼容性限制了其采用。失效无关计算可消除攻击者利用内存错误破坏地址空间的可能性,并显著提升系统可用性。本文提出S3Library(Saturation-Memory-Access Safer String Library,饱和内存访问安全字符串库),其在函数签名上与标准C库兼容。我们的技术自动将不安全的废弃内存/字符串函数替换为执行边界检查并通过无界内存消除缓冲区溢出的更安全版本。S3Library采用MinFat——一种遵循“少即多”原则的极紧凑指针表示——将元数据编码进指针中未使用的上位比特。此外,S3Library利用饱和内存访问消除对非界内填充区的非法内存访问。即便发生越界访问,故障程序也不会中断。我们在X86-64的LLVM框架内实现了该方案,并从正确性、安全性、运行时性能与可用性方面进行了评估。

关键词

引用

@article{arxiv.2004.09062,
  title  = {S3Library: Automatically Eliminating C/C++ Buffer Overflow using Compatible Safer Libraries},
  author = {Kang Sun and Daliang Xu and Dongwei Chen and Xu Cheng and Dong Tong},
  journal= {arXiv preprint arXiv:2004.09062},
  year   = {2020}
}