使用Fortify的原因有两个,一是作为甲方公司,对于业务使用不同类型的代码或框架编写的程序,要有一个基础的风险识别能力;二是对于我们主要的业务,要有白盒扫描规则的定制化能力。
而Fortify有着多种语言的基础扫描规则,且提供了不同类型的规则定制接口,足以满足我们的需求。所以今天就简单介绍一下如何使用Foritfy扫描、如何对扫描结果进行审计并生成报告,以及一个简单的定制化规则的编写。
01 简介Fortify SCA(Fortify Static Code Analyzer),是一个提供静态源码扫描能力的工具,也是Fortify中的一个核心模块。我们今天只介绍Fortify SCA模块,对于服务端SSC等,单从扫描能力来说,并不是我们关心的重点。下面所说的Foritify也都是在指这个模块。
如果需要了解Fortify支持的编程语言,我们可以打开Fortify的审计窗口。选择Options->Options...->Security Content Management后,可以看到如下窗口:
上面两个框中的是Fortify自带的规则类型以及我们自定义的规则类型,我们在扫描代码时,可以选择使用部分规则,或者全部规则。最下面的框中是我们选择的Fortify规则的语言。目前我们选择的是使用中文,这样扫描和审计代码时,Fortify会使用中文显示命中的漏洞规则的原理和简介。
如果要了解,具体有哪些规则项,我们可以打开下面的网址查看,可以看到规则列表和每条规则的详细介绍。
https://vulncat.fortify.com/zh-cn/weakness
如果想要找到对应的规则文件,可以在Fortify安装目录下的Core\config\rules找到。如果你有自定义的规则,则可以在Core\config\customrules中发现。
0 2 扫描与审计上面简单的介绍了Fortify的基础信息,接下来,我们介绍一下如何使用。使用的最重要环节,就是扫描。这里我们介绍一下如何对Android项目进行扫描和审计,然后介绍一个使用Fortify扫描PC端Qt项目的例子。
2.1 扫描Android项目使用插件扫描是一个比较推荐的方式,因为操作简单,且环境可靠不需要重新配置。
第一步肯定是获取插件,我们需要从安装Fortify开始。如果已经安装了也不要紧,直接点击安装到原有目录即可,Fortify会自动适配的。安装步骤基本都使用默认选项,但是在选择组件的环节,我们要记得勾选上我们需要的插件。
上图中第一个红框是给Android Studio使用的插件,是本小节需要使用到的。第二个红框则是一个Visual Studio的插件,后面会用到,这里可以先勾选一下(但要记得Visual Studio的插件只能在Visual Studio已存在时安装,版本也不要选错)。安装后,可以在Fortify安装目录下的plugins\IntelliJAnalysis目录中找到我们需要的插件。<