欢迎访问中国科学院大学学报,今天是
论文

一种多重循环程序内存访问越界检测方法

  • 王嘉捷 ,
  • 蒋凡 ,
  • 张涛
展开
  • 1. 中国科学技术大学计算机科学技术系,合肥 230027;;
    2. 中国信息安全测评中心,北京 100085

收稿日期: 2009-03-31

  修回日期: 2009-06-09

  网络出版日期: 2010-01-15

Detection method for memory overrun in multi-loop programs

  • WANG Jia-Jie ,
  • JIANG Fan ,
  • ZHANG Tao
Expand
  • 1. Department of Computer Science, University of Science and Technology of China, Hefei 230027, China;
    2. China Information Technology Security Evaluation Center, Beijing 100085, China

Received date: 2009-03-31

  Revised date: 2009-06-09

  Online published: 2010-01-15

摘要

提出一种内存访问越界检测方法,以克服现有方法遇到的多重循环难题. 先识别疑似缺陷点及其依赖区域,再实施多重循环的递推链分析,并推断缺陷触发可能性和路径指导信息,从而实现基于符号执行的缺陷定向检测,最终查出越界缺陷及其触发路径与程序输入. 已实现原型工具,检测了多个开源软件,找到了真实的代码缺陷. 实验结果表明,该方法既避免了盲目路径遍历,又保持了路径敏感和位级跟踪的检测精度,提高了缺陷检测效率和准确度.

本文引用格式

王嘉捷 , 蒋凡 , 张涛 . 一种多重循环程序内存访问越界检测方法[J]. 中国科学院大学学报, 2010 , 27(1) : 117 -126 . DOI: 10.7523/j.issn.2095-6134.2010.1.015

Abstract

A detection method for memory overrun is presented to overcome multi-loop problems: (1)identifies suspicious defects and their dependent regions; (2)analyzes multi-loops by CR# algebra; (3)infers probability of triggering defect and path guide information; (4)detects defects based on symbolic execution; and (5)finds defects, trigger paths, and program input. A prototype tool has been implemented, and it found real defects in several open source softwares. The results show that the new method can avoid blind path traversal while preserving path-sensitive and bit-level detection precision, and improve efficiency and veracity of defect detection.

参考文献


[1] Larochelle D, Evans D. Statically detecting likely buffer overflow vulnerabilities //Proceedings of 10th conference on USENIX Security Symposium. 2001.

[2] Godefroid P, Klarlund N, Sen K. DART: Directed automated random testing //ACM Sigplan Notices. 2005, 40: 213-223.

[3] Sen K, Agha G. CUTE and jCUTE: Concolic unit testing and explicit path model-checking tools //Proceedings of Conference on Computer Aided Verification. 2006, 4144: 419- 423.

[4] Cadar C, Ganesh V, Pawlowski P, et al. EXE: Automatically generating inputs of death
[J]. ACM Transactions on Information and System Security, 2008,12: 1-38.

[5] Horwitz S, Reps T. The use of program dependence graphs in software engineering //Proceedings of International Conference on Software Engineering. 1992: 392- 411.

[6] Van Engelen R. The CR# algebra and its application in loop analysis and optimization . Technical Report TR- 041223. Department of Computer Science, Florida State University, 2004.

[7] Van Engelen R, Birch J, Shou Y,
et al. A unified framework for nonlinear dependence testing and symbolic analysis //Proceedings of the ACM International Conference on Supercomputing (ICS). 2004: 106-115.

[8] Cytron R, Ferrante J, Rosen B,
et al. An efficient method of computing static single assignment form //Proceedings of 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 1989.

[9] Microsoft Research. Microsoft Phoenix Academic Program . . http://research.microsoft.com/phoenix/

[10] Microsoft Research. Z3: New High-performance Theorem Prover . . http://research.microsoft.com/projects/z3/

[11] Sourceforge. Cppcheck: A tool for static C/C+ + code analysis . . http://cppcheck.wiki.sourceforge.net/

文章导航

/