摘要
软件漏洞检测是确保软件安全的重要方法之一.现有可执行程序漏洞检测方法主要分为白盒测试和黑盒测试两类:前者需要完整构造程序漏洞产生表达式,因此存在路径爆炸以及表达式难以求解等问题;后者通过尝试各种输入以检测程序漏洞,针对性不强且存在过多重复计算.本文通过确定程序输入中直接影响程序检测点的部分,结合种子输入产生能够直接到达检测点的输入数据,提高黑盒测试过程的针对性.分析检测点间守护条件和检测条件的相关性,去除检测过程中冗余的检测点,提高整体检测效率.提出了彩色污点传播的方法,快速确定程序检测点与外部输入及约束条件间的依赖关系.通过对4款现有应用软件的分析试验,结果表明本方法提高了黑盒测试的针对性和分析效率.
Software vulnerability detection is one of the most important methods for guaranteeing software security. Two main classes of methods can detect vulnerabilities in binary files: white-box testing and black-box testing. The former needs to construct and solve path constraints to detect vulnerabilities. It has two main drawbacks: path exploding and complexity of constraints. The latter often aimlessly exhausts various inputs to test binary files. This paper combines both testing methods to detect vulnerabilities in binary files. By analyzing the input elements that affect check condition corresponding to a certain check point, we can generate one class of inputs that get to the check point to increase fuzzing efficiency. By analyzing the relationship between guard conditions and check condition, the redundant check points are removed. Colorful taint analysis method (CTAM) is proposed to compute guard conditions, which is more efficient than traditional taint analysis method (TTAM). We implemented a prototype and made several experiments on it. The results showed that our method could increase the efficiency of black-box testing.
出处
《中国科学:信息科学》
CSCD
2011年第5期526-540,共15页
Scientia Sinica(Informationis)
基金
国家自然科学基金(批准号:60970028
60703076
61073179)资助项目
关键词
软件测试
漏洞检测
动态检测
黑盒测试
彩色污点传播
software testing
vulnerability detection
dynamic testing
black-box testing
colorful taint analysis