北京邮电大学学报

  • EI核心期刊

北京邮电大学学报 ›› 2016, Vol. 39 ›› Issue (s1): 50-54.doi: 10.13190/j.jbupt.2016.s.012

• 论文 • 上一篇    下一篇

基于动态符号执行的C代码缓冲区溢出检测

张俊贤, 李舟军   

  1. 北京航空航天大学 计算机学院, 北京 100191
  • 收稿日期:2015-09-02 出版日期:2016-06-28 发布日期:2016-06-28
  • 作者简介:张俊贤(1981-),男,博士生,E-mail:LoongWalker@163.com;李舟军(1963-),男,博士,教授,博士生导师.
  • 基金资助:

    国家自然科学基金项目(61170189,61370126);国家高技术研究发展计划(863计划)项目(2015AA016004)

Buffer Overflow Detection in C Code Using Dynamic Symbolic Execution

ZHANG Jun-xian, LI Zhou-jun   

  1. School of Computer Science and Engineering, Beihang University, Beijing 100191, China
  • Received:2015-09-02 Online:2016-06-28 Published:2016-06-28

摘要:

缓冲区溢出是C程序中众多安全隐患的根源之一,以C程序代码为目标对象,提出了一个基于底层虚拟机中间代码的缓冲区溢出检测工具PathChecker.该工具基于动态符号执行方法,使用无量词谓词公式刻画缓冲区操作的安全性质,并利用可满足模型理论求解器技术检验缓冲区操作的安全性.实验结果表明,该工具能有效检测C代码中的缓冲区溢出漏洞,且易于推广至其他高级程序语言代码和其他类型安全漏洞的检测.

关键词: 缓冲区溢出检测, 动态符号执行, 可满足模型理论求解器, 底层虚拟机中间代码插桩

Abstract:

Buffer overflow is a source of many security problems in C programs. A new tool named PathChecker to detect buffer overflows in C codes using dynamic symbolic execution method is proposed. PathChecker uses quantifier-free predicate formulas to describe the safety properties of buffer access operations and check these properties using a SMT solver. Experimental results show the effectiveness of this tool which is very easy to extend to check other safety properties.

Key words: buffer overflow detection, dynamic symbolic execution, satisfiability modulo theories solver, low level virtual machine byte code instrumentation

中图分类号: