此次演示的是用Fortify SCA静态分析Java代码。和FindBugs不一样的是Fortify SCA还可以静态分析C/C++,.NET和PL/SQL等代码。html
一.Fortify SCA静态分析原理安全
由于我不是写这个东东的人。并且接触这个工具时间也有限。因此对它的工做原理认知比較浅,很是可能是经过它的说明文档得来的。eclipse
Fortify SCA静态分析分两个阶段:工具
1.Translation:spa
把各类语言的源码转为一种统一的中间语言代码。插件
2.Analysis:htm
依据中间代码分析代码漏洞。并得出报告。blog
Fortify有很是多个语言转换器,但核心的静态分析引擎仅仅有一套。ip
二.Fortify SCA的使用文档
先看看Fortify SCA Demo 4.0.0的文件夹:
这个是Fortify SCA Demo 4.0.0的文件夹,这里主要有两个文件:auditworkbench.cmd和sourceanalyzer.exe。auditworkbench.cmd是查看静态分析报告的工具,sourceanalyzer.exe是静态代码分析器。这里咱们还看到了一个FindBugs的文件夹。这是由于这个版本号的Fortify集成了此功能,你可以经过传參给sourceanalyzer.exe调用FindBugs(但我通常不这么作,可以直接使用FindBugs的话。为何还要经过sourceanalyzer.exe调呢?)。
開始扫描静态分析,首先CMD进入Java源码文件夹。而后“H:\Fortify\sourceanalyzer.exe -classpath "**/*.jar" -f test.fpr .”。在当前文件夹获得结果报告test.fpr。
用auditworkbench打开test.fpr,效果例如如下图:
这里auditworkbench主要分4部分:
1.左上(Issues):是警告分类,这里Fortify分了3了,严重程度由高至低各自是:hot。warning。info。如下是本次扫描的问题列表,双击就能够定位问题代码。
2.右上:源码。双击问题列表就能够本身主动定位代码。
3.左下(analysis trace):问题处的Trace信息,告诉你问题出现在哪里文件第几行。
4.右下(details):问题的具体说明。还有示范代码。
OK,现在看看其它地方,比方:menubar(Options)-->Show View-->Other,你会看到下图:
这里我看到了一个很是像eclipse管理插件的窗体。噢,难道.....OK,让我看看再找找Fortify的文件夹看看,找到了这个东西:
这里发现Fortify SCA真的是一个Eclipse插件,只是当我兴冲冲地把这个插件放进myeclipse插件库并从新启动后,发现这个不能识别:<,好像仍是差了点东西。这个之后研究。
这个工具还有很是多功能,但暂且先写这多。
三.Fortify SCA Demo 4.0.0与FindBugs(1.3.7.20081230)对照
今天试着对同一份代码进行静态扫描,发现FindBugs找到的问题种类,数量都比Fortify SCA Demo 4.0.0多很是多:
FindBugs发现问题种类有:20多种
Fortify SCA Demo 4.0.0发现问题种类:5种
在分析发现问题后。发现了一个有趣现象,Fortify SCA Demo 4.0.0和FindBugs发现的BUG类型是全然不一样,可以说是互补的!
当中,FindBugs发现的问题相对照较重要。但FindBugs仅仅是针对Java代码的静态分析器,而Fortify SCA则支持不少其它的语言,并且Fortify SCA对发现问题的解释相对照较清晰。
致使这个问题的解决办法多是:Fortify SCA Demo 4.0.0这个版本号比較老,并且是试用版。规则库和静态分析引擎都不全......假设是最新的Fortify SCA商业版,应该是不错,8个分析不一样类型问题的静态分析引擎。庞大的规则库.......可是俺这样的穷人还没机会试:<
对照两个Java静态分析工具,Fortify SCA Demo 4.0.0和FindBugs(1.3.7.20081230),使用FindBugs是不错的选择,它相对照较强些,但假设可以两个都用固然效果更好:>
四.Fortify SCA的Bug类型及解释说明
尽管Fortify SCA对问题已经有比較清晰的说明。可是仍是决定本身总结,这样会更加清晰。(相关问题解释说明稍后补上)
Hot:
//...