代码的静态分析不能够找出所有的问题,有些时候漏洞存在于建构过程中。
软件开发的过程具有多个层次。在最基本的层面是程序员写的代码,这些代码接下来会被建构系统编译,建构系统将这些代码集中在一起以备部署。代码分析厂商Coverity现在正在扩大其分析能力,期望超越静态分析的层次以找出被构建系统忽视的漏洞。
新的分析模式有助于减少应用程序中的软件缺陷。Coverity的新系统首先会提供给自己的商业客户但是也会放到已经从开源软件中减少了8500个软件缺陷的开源扫描中。
Coverity的首席技术官Ben Chelf称,建构系统本质上是代码的装配线,它将写好的代码集中到一起。通过分析建构系统,我们会找到不同于以往分析代码本身的一些东西。
他还解释称,建构分析软件会监视软件的建构过程,而不是分析分析实际建立配置文件本身。
Coverity所做的是让每一个建构系统都具备的监视功能向操作系统发出调用,并执行该操作,这样所有的信息都会处于监视之中。所以 Coverity拥有超过80个不同的系统调用来获取建构信息,然后只需让一个包装脚本监视就可以了。这样以来,就可以建立可靠的图表了。
开源扫描
Coverity从2006年开始就为软件缺陷进行开源代码的扫描。起初,Coverity Scan 是由美国国土安全部支持的,但是现在=这项工作由Coverity自己运行并提供资金上的支持。Coverity Scan着眼于几百个开源项目,旨在帮助我们寻找并修复软件瑕疵。
Chelf指出该计划旨在尽快向开源扫描添加建构分析仪,尽管他并未告知具体的实施时间。Chelf说:“这想计划一直在我们的开源扫描的路线图之中,实施只是时间安排上的问题。Chelf认为Coverity建构分析系统是在代码分析市场中将占据一席之地。
在这之外,Coverity的竞争对手Klocwork声称他们现在也可以建立类似的建构分析系统。“现在,我们的大多数建构分析技术都用来为客户的建构系统提供自动化的查找服务以便能有效而准确地分析代码。”Klocwork的营销总监Brendan Harrison说,“对于代码深度分析来说,这是一项必不可少的功能。此外,我们过去曾合作的许多用户都使用我们的分析功能并通过结构化的代码清理来优化自己的建构过程。”
防止开源攻击
Coverity建构系统也能让开发人员确保自己编写的代码没有在无意中为攻击大开方便之门。
Chelf解释称,在与Palamida的软件合作过程中,一个程序员可以检查整个建构过程以识别是否在开源代码中存在可以被攻击的缺陷。Palamida保存了更新的开源数据库和应用程序,并且如果有旧的,具有潜在威胁的开源代码被使用时,它会监测出来。
来自Coverity的新型代码分析由新的Coverity整合中心执行,该中心旨在将各种代码分析的片段联系起来,为开发人员提供全新的认识。作为 Coverity防护代码分析(用来进行静态代码分析和新的建构分析)的伙伴,整合中心也可以实现今年早些时候推出的架构分析。
“有多种不同的分析软件的系统,从架构角度,从建构角度已经从代码角度,”Chelf说,“我们可以选择任何喜欢的方式。所有这些不同的角度都能帮助我们以不同的方式找到软件中的漏洞。”
【编辑推荐】