通过命令行解释 Fortify 结果文件 (.fpr)

Interpreting Fortify results file (.fpr) through command line

作为自动化 运行 安全代码分析过程的一部分,我有一个 Jenkins 作业,它使用 sourceanalyzer 命令行工具生成 .fpr 结果文件。目前,我在 Audit Workbench 应用程序中打开此结果文件以查看结果并检查是否有任何新引入的问题等,并从那里生成 PDF/XML 格式的报告。

有没有人可以通过命令行调用 Audit Workbench 并生成有关问题的报告,然后我们可以通过 Jenkins 脚本利用该报告并邮寄结果?在线查看命令行使用似乎停止在 fpr 生成阶段。

提前致谢!

有一个命令行实用程序可以从 FPR 文件生成报告。

目前有两种报告生成器:Legacy 和 BIRT。 BIRT 报告引擎已引入 Audit Workbench 版本 4.40。

下面是一个使用 BIRT 报告引擎生成 DISA STIG 报告的示例

BIRTReportGenerator -template "DISA STIG" -source HelloWorld_second.fpr 
    -output BirtReport.pdf -format PDF -showSuppressed --Version "DISA STIG 3.9" 
    -UseFortifyPriorityOrder

使用遗留的有点复杂。命令是:

ReportGenerator -format pdf -f LegacyReport.pdf -source HelloWorld_second.fpr 
    -template DisaStig3.10.xml -showSuppressed -showHidden

您可以使用位于 <SCA Install Dir>/Core/config/reports 目录中的预定义模板报告之一,或者使用报告向导生成一个模板并保存模板,该模板存储在 [=29] 的 C:\Users\<USER>\AppData\Local\Fortify\config\AWB-XX.XX\reports\ 目录中=].

在 Linux/Mac 上查看 com.fortify.WorkingDirectory 属性 的配置文件 <SCA Install Dir>/Core/config/fortify.properties,这是存储报告的地方

@SBurris,

如果您不想显示Suppressed/Hidden是不是只有 -hideSuppressed 和 -hideHidden?

此外,有没有一种方法可以添加自定义过滤器,使其不显示 STIG/SANS/OWASP 中的 "nones" 之类的内容,就像您可以在 AWB GUI 中创建的那样?

基本上,我需要一个命令来合并两个 FPR,然后根据在扫描代码中发现的新内容与旧 FPR 进行比较。

合并应该是:

FPRUtility -merge -project <newest_scan.fpr> -source <previous_scan.fpr> -f <BUILDXX_MergedWith_BUILDXY.fpr>

合并后我需要的自定义过滤器是:

"[OWASP Top 10 2013]:!<none> OR [SANS Top 25 2011]:!<none> OR [STIG 3.9]:!<none> AND [Detected On]:!/^/"

  • 其中 Detected On 字段是自定义标记,我需要将其从上一个 FPR 文件传递​​到新合并的文件中。

然后将新合并的 fpr 的报告以 pdf xml 格式输出到我指定的 location/filename 格式。大致如下:

~AWB_Installation_Dir/bin/ReportGenerator -format pdf -f [BUILDXX_MergedWith_BUILDXY].pdf -source output.fpr 
    -template DisaStig3.10.xml -hideSuppressed -hideHidden

显然,只要我们可以将其返回到 Bamboo,这可以是多个命令。任何帮助将不胜感激。谢谢。

FPRUtility 通过应用布尔 AND 运算符解释 -information -search -query ... 参数中的 space 分隔条件。为了获得 2 个条件 A || B 的并集,我认为我可以与补充前者的其他条件的否定相交:!C && !D(其中 A || B || C || D 始终成立)。即,要找到所有高危和关键问题,我使用

FORTIFY_ROOT\jre\bin\java -d64 -Xmx4096M -jar FORTIFY_ROOT\Core\lib\exe\fpr-utility-exe.jar -project APP_VER_DATE.fpr -information -search -query "[OWASP Top 10 2017]:A [fortify priority order]:!low [fortify priority order]:!medium" -categoryIssueCounts -listIssues > issues.txt

在审计的情况下,我想我需要旧的报告生成实用程序来包含被抑制的问题(及其评论),

sed -e 's/\(IssueListing limit=\)"[^"]\+"/"-1"/' -i "FORTIFY_ROOT/Core/config/reports/DeveloperWorkbook.xml"
cmd /c call ReportGenerator -template DeveloperWorkbookAll.xml -format pdf -source APP_VER_DATE.fpr -showSuppressed -f "APP_VER_DATE_with_suppressed.pdf"