中文

实用的整数溢出预防

密码学与安全 2017-11-06 v9 软件工程

摘要

商业软件中的整数溢出是软件漏洞的主要来源之一,可导致可利用的内存破坏漏洞,并最终促成强大的基于软件的攻击,即代码重用攻击(CRA)。在本文中,我们提出了 IntGuard,这是一种能够通过高质量的源代码修复来修补整数溢出的工具。具体而言,给定程序的源代码,IntGuard 首先利用静态源代码分析和可满足性模理论(SMT)求解来发现整数溢出错误的位置。随后,IntGuard 基于 SMT 约束的模块化操作以及一组可扩展的可定制代码修复模式,生成整数多精度代码修复。我们在目前最大的开源 C/C++ 程序测试集中的 2052 个 C 程序(约 100 万行代码)以及一个包含大型复杂程序的基准测试集上实现并评估了 IntGuard。评估结果表明,IntGuard 能够精确地(即不会意外修复假阳性)以低计算和运行时开销修复程序,且二进制和源代码膨胀极小。在一项对照实验中,我们表明 IntGuard 比手动生成的代码修复更具时间效率,并实现了更高的修复成功率。

关键词

引用

@article{arxiv.1710.03720,
  title  = {Practical Integer Overflow Prevention},
  author = {Paul Muntean and Jens Grossklags and Claudia Eckert},
  journal= {arXiv preprint arXiv:1710.03720},
  year   = {2017}
}

备注

20 pages