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



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

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

提前感谢!

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

目前有两个报告生成器:Legacy和BIRT。BIRT报告引擎是在版本4.40的Audit Workbench中引入的。

下面是一个使用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目录中的一个预定义模板报告,也可以使用报告向导生成一个报告并保存存储在Windows中C:Users<USER>AppDataLocalFortifyconfigAWB-XX.XXreports目录中的模板。

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

@SBurris,

如果您不想显示Suppressed/Hidden,它只是-hidedSuppressed和-hideHidden吗?

此外,有没有一种方法可以添加自定义过滤器,使其不显示STIG/SANS/OWASP中的"nons"之类的内容,就像您可以在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文件携带到新合并的文件中

然后以pdf和xml格式将新合并的fpr中的报告输出到我指定的位置/文件名。大致如下:

~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 ...参数中的空格分隔条件。为了获得两个条件A || B的并集,我认为我可以与其他条件的否定相交,这些条件补充了前者:!C && !D(其中A || B || C || D总是成立)。也就是说,为了找到所有重要问题,我使用

FORTIFY_ROOTjrebinjava -d64 -Xmx4096M -jar FORTIFY_ROOTCorelibexefpr-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"-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"

最新更新