论文部分内容阅读
随着硬件日新月异的发展,软件的规模变的越来越庞大,软件逻辑也越来越复杂。因此软件开发过程中,不可避免的会出现软件安全漏洞。作为软件测试的基本方法,静态分析可以快速,准确的定位到软件缺陷的源代码。能有效的提高软件的可靠性和安全性。静态分析是指在编译理论的基础上,对程序的结构,语义做软件安全性方面的分析。现在的高级语言使用灵活,表达能力强,减轻了程序员开发的负担。但是高级语言也存在很多安全漏洞,如内存泄露、缓冲区溢出等。软件如果能在开发初期对源程序进行代码模式约束,避免容易出错的代码在程序中出现,则可以提高软件的可靠性。对于特定的漏洞,可以总结出相对统一的源代码模式。安全漏洞的检测可以根据源代码指令的语义推导获得漏洞模式的状态,从而分析出漏洞出现的可能性。可以根据特定的漏洞模式,定制出相应的漏洞状态检查算法进行模式匹配。不同的漏洞检测算法可以用统一的安全规则语言描述。安全规则语言通过解析器解析为相应的自动机模型。自动机模型可以根据源代码指令的语义、控制流信息、变量状态发生状态的转换。状态自动机记录控制流的状态信息,以检测源代码语义是否符合定制的安全规则。通过源码的静态分析,语义检测,自动机模型能够检测出源程序中是否含有不安全的漏洞模式。根据已获得的经验,对源码中出现的漏洞进行修复,可以提高软件的健壮性。