本篇文章讲解代码审计工具Fortify的基本用法,感兴趣的小伙伴可以研究学习一下,文中部分地方可能会有遗漏,麻烦各位大佬指正,深表感谢!!!
一、工具介绍Fortify全名叫Fortify SCA ,是惠普公司HP的出品的一款源代码安全测试工具,这家公司也出品过另一款Web漏洞扫描器,叫做 Webinspect。美国的Fortify、Coverity、Codesecure、IBM AppScan Source 以色列的Checkmarx、加拿大的Klockwork是现在国际上比较出名的几款代码审计工具,那么接下来就Fortify来介绍一下使用方法。
Fortify代审工具是可以快速上手的,并不是一款傻瓜工具,该工具中有很多自定义操作,还有命令行操作,同时还可以自己编写规则库(详细的使用说明请参考Fortify的说明书)。
二、安装过程该工具安装过程较为简单,打开安装包,一直点击 “下一步”,到这里选择fortify.license文件 接下来按照默认,一直 “下一步” 即可。 安装完成,打开工具界面,如下所示
三、升级中文规则库如上工具现已安装完成,接下来需要升级一下中文规则库,打开 Audit Workbench 快捷方式,在弹出的gui界面,点击 Options 选项,然后点击 Security Content Management 选项,点击 Update Security Content – zh_CN选项可以升级Fortify的中文规则库。 出现该弹窗,说明中文规则库升级成功。
如果受license限制,无法升级到最新的规则库,那么可行的方法就是通过其他渠道获取一个最新的中文规则库,手工对 ExternalMetadata 及 rules 两个文件夹的文件进行替换。
目录位置:C:Program FilesFortifyFortify_SCA_and_Apps_21.2.3Coreconfig 将最新版的两个文件夹替换,在回软件中看 Security Content Management 配置,Version信息为最新日期即为替换成功。
四、代码审计过程如果是java项目,可直接点击 Scan Java Project选项。 弹窗java version,可以选择web应用的java代码的所在环境的java版本,这里我们选择 1.8 如果扫描对象是Java Web代码,就选择 Yes,如果不是Java Web,就选择 No 其他的选项保持默认即可。 接下来点击 Scan,Fortify就开始对代码进行代码审计了。 扫描完成后,Fortify工具将扫描结果显示在界面上,如下图所示
五、代码审计结果Fortify的 Diagram 功能非常强大,以图表形式展示源代码中漏洞触发点的从开始到触发的所有过程,我们可以借助此功能,分析是否有过滤函数对漏洞触发的特殊字符进行了过滤。 同时在 Recommendations 这里给出了中文的漏洞修补建议。 点击 Group By 按钮,可以以不同漏洞分类标准对漏洞进行不同的分类展示。 如果代审过程中遇到误报,可以选择Hide in AWB ,对该漏洞结果进行隐藏。 当代码完成后,需要生成报告,点击Tools -> Reports -> Generate BIRT Report/ Generate Legacy -> 选择生成报告类型以及导出格式。 这个功能导出报告可以作为参考,但是实际代码审计报告还是需要自行编写。
六、中文乱码解决Fortify默认的编码不是UTF-8 ,导致部分中文的Java代码会出现乱码问题,如果是单文件乱码,可以使用 Edit选项卡下 Set Encoding 进行设置,鼠标光标在右侧代码框内点击一下,否则此项功能不能用,但这种方法只适用于单个文件的乱码解决。 点击 Set Encoding 里弹出文本编码框,可看到有不同文本编码可选,中文则选择 UTF-8 编码。 上面刚刚提到这个方法只适用于单个文件,如果想一劳永逸解决乱码问题,需要在Fortify的配置文件中指定java文件的编码了。
在 C:Program FilesFortifyFortify_SCA_and_Apps_21.2.3Coreprivate-binawb 路径下有一个 productlaunch.cmd 的文件。在命令行最后添加 -Dfile.encoding=utf-8 编辑保存,重新启动软件即可!!!
以上就是代码审计工具Fortify的基本用法,后续会更新Fortify在代码审计中的各种操作以及审计流程。