安全测试工具Fortify最新版本及使用操作演示

代码测试工具是安全测试、代码审计中经常会用到的一款软件测试工具,支持超过27种语言,超过911,000个组件级API,覆盖810多个SAST漏洞分类。通过Fortify的安全编码规则库,可以定位漏洞根本原因,参考漏洞修复指南。Fortify现在已发布的最新版本是Fortify 22.1.0 版本,首先我们先一起来看一下最新版本与老版本相比有哪些新功能,然后再带大家一起了解一下这款代码审计工具的实操。

最新发布的 Fortify 22.1.0 版本,能高度兼容最新的软件技术,对运营环境常见的应用安全用例的兼容性也更加广泛,主要有以下更新:

操作系统更新

新增对以下操作系统和版本的支持:

- macOS 12

- Windows 11

编译器更新

新增对以下编译器版本的支持:

- Clang 13.1.6

- OpenJDK javac 17

- Swiftc 5.6

- cl (MSVC) 2015 and 2022

构建工具更新

新增对以下构建工具版本的支持:

- Gradle 7.4.x

- MSBuild 14.0, 17.0, 17.1 and 17.2

- Xcodebuild 13.3 and 13.3.1

语言和框架更新

- C# 10

- .NET 6.0

- C/C++ 20

- HCL 2.0

- Java 17

- TypeScript 4.4 和 4.5

现在已经可以支持 Visual Studio 2022、IntelliJ 2021.x。Fortify Audit Workbench、Fortify Eclipse Complete Plugin 和 Fortify Extension for Visual Studio 中的选项菜单能够导入从客户门户下载的 Fortify 所有规则包。

现在在两个 FPR 之间能比较扫描文件的 LOC,并查看 FPR 分析文件的 LOC 计数(-loc),或使用 FPRUtility(-loc,-compareTo)在两个 FPR 之间比较 LOC 计数。

现在,用户可以通过服务器的“rulepackupdate.SocketReadTimeoutSeconds”属性配置 fortifyupdate 的 socket 超时。默认值是 180。

可以用 shortfilename 作为问题模板中的搜索修饰符,来过滤或隐藏与文件名匹配的问题。如果进行全路径匹配,可以继续使用文件搜索修饰符。

以上是代码测试工具Fortify最新版本的一些新的更新与亮点,接下来我们一起来看一下代码测试工具Fortify的实操。

1、通过“Audit Workbench”进行测试。

“Audit Workbench”支持Java语言源代码的测试

(1) 打开桌面Fortify SCA 20.1 代码审计引擎,在主页面选择代码测试语言类型。

①如果是Java语言项目,选择“Scan Java Project”

②如果是非Java语言,选择“Advanced Scan”

(3) 选择被测试代码所在目录

(4) 选择Java版本

(5) 进行代码测试配置

(6) 运行代码测试

(7) 查看代码测试结果

4、测试报告生成

①打开“Audit Workbench”中的“Tools-Reports”,选择“Generate BIRT Report”或者“Generate Legacy Report”

② 在报告模板“Report Template”中选择“Developer Workbook”,点击“Generate”按钮,工具会自动生成报告。

通过“Scan Wizard”进行测试

“Scan Wizard”支持Java、Python、C/C++、.Net、Go、PHP、Flex、Action Script、HTML、XML、JavaScript、TypeScript、Kotlin、SQL、ABAP、ColdFusion语言或框架源代码的测试。

(1)打开Scan Wizard

(2)选择Python文件所在目录

(3)确认测试工具自动识别内容

(4)选择库文件

(5)生成脚本文件

(6)完成脚本文件生成

(7)执行生成的脚本文件

通过命令行进行测试

命令行方式支持各语言源代码的测试

(1)Linux项目测试

以Linux下C/C++程序代码测试为例:

①代码编译在代码测试执行前,首先需要进行C/C++程序代码的编译,如下面的示例:gcc -I. -o hello.o -c helloworld.c通过gcc编译器将代码进行编译。

②代码测试在代码编译后,使用sourceanalyzer命令进行代码文件测试。sourceanalyzer -b <build_id> gcc -I. -o hello.o -c helloworld.c

(a)使用Apple “xcode-select command-line tool”设置Xcode path,同时供Fortify使用。

(b)确保项目相关依赖库文件已经包含在项目中。

(c)针对Swift代码,确保所有第三方模块都已经被包含,包括Cocoapods。

(d)如果项目中包含二进制的属性列表文件,需要将它们转化为XML格式,通过Xcode的putil命令进行转换。

(e)针对Objective-C项目,需要保证头文件能够被获取。

(f)针对WatchKit应用,需要同时转化iPhone应用和WatchKit扩展目标。

③ iOS代码测试执行sourceanalyzer -b <build_id> xcodebuild [<compiler_options>]

(2)iOS项目测试

① iOS项目测试条件

(a) iOS项目需要使用non-fragile Objective-C runtime模式(ABI version 2或3)

(b) 使用Apple “xcode-select command-line tool”设置Xcode path,同时供Fortify使用。

(c) 确保项目相关依赖库文件已经包含在项目中。

(d) 针对Swift代码,确保所有第三方模块都已经被包含,包括Cocoapods。

(e) 如果项目中包含二进制的属性列表文件,需要将它们转化为XML格式,通过Xcode的putil命令进行转换。

(f) 针对Objective-C项目,需要保证头文件能够被获取。

(g) 针对WatchKit应用,需要同时转化iPhone应用和WatchKit扩展目标。

② iOS代码测试执行sourceanalyzer -b <build_id> xcodebuild [<compiler_options>]

测试报告生成

通过“Scan Wizard”生成测试报告

通过“Scan Wizard”方式进行测试执行,会生成.fpr测试结果文件,然后通过命令行方式基于测试结果文件生成测试报告文件。

通过命令行生成测试报告

通过“Scan Wizard”方式或命令行方式生成测试结果文件后,可以基于“ReportGenerator”命令生成测试报告。

下面示例中,基于.fpr结果文件生成PDF格式的测试报告。

ReportGenerator -format pdf -f <my_report>.pdf -source <my_results>.fpr<my_report>.pdf为命名的PDF格式测试报告名称,<my_results>.fpr为测试结果文件名称。

以上就是分享的所有内容,如需软件试用、不同安全测试工具参数比对等,可私信我。