软件安全漏洞检测技术是提高软件质量和安全性、减少软件安全漏洞的重要方法和基本手段,受到学术界和工业界的广泛关注和高度重视.其主要途径包括软件测试、程序分析、模型检验与符号执行等.近年来,综合利用多种研究方法和技术手段来检测软件安全漏洞已成为软件安全领域的研究热点.文中首先回顾了程序分析与软件安全漏洞检测的基本概念、核心问题和传统手段.然后重点介绍该领域的最新进展,主要包括轻量级动态符号执行、自动化白盒模糊测试以及其实现技术和相应的工具.最后,指出了其所面临的挑战和发展趋势.
Software vulnerability detection is one of the most important methods to improve software quality and is the key to insuring software security, which leads grant concerns from researcher and industry. Its main content includes software testing, program analysis, model checking and symbolic execution etc. In recent decade years, how to utilize various classic methods synthetically to detect software vulnerability holes is becoming a new hot research direction. This paper reviews the basic concepts, key challenges and some classic solutions of software vulnerability detection, and beyond this, it tries to introduce some new promising improvement in this research area, including lightweight dynamic symbolic execution, automatic white-box fuzz testing, their implementation technologies and corresponding tools. At last, it provides a survey of some key challenges and new research trends in future research work.