作为运行安全代码分析过程自动化的一部分,我有一个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"