You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortify CLI自动化报表实现咨询:区分有无新漏洞场景

你的这个方案完全可行!用FPRUtility对比新旧FPR并通过issue age:new查询来判断新问题,是Fortify自动化流程里很常见的做法,刚好能满足你区分两种报表的需求。下面我一步步拆解具体实现方式:

方案可行性确认

首先明确:这个方案完全可行。Fortify的FPRUtility工具本身就支持FPR文件的合并、查询和分析,通过对比新旧FPR并筛选age:new的问题,正好可以精准判断最新扫描是否产生了新问题,进而触发不同的报表生成逻辑。

具体实现步骤

1. 准备新旧FPR文件

  • 确保你已经有历史扫描的旧FPR文件(比如命名为old_scan.fpr)和最新扫描生成的新FPR文件(比如new_scan.fpr)。
  • 首次自动化的话,可以把第一次扫描的结果作为初始基准旧FPR。

2. 合并新旧FPR文件

使用FPRUtility的merge命令,将旧FPR合并到新FPR中,这样合并后的文件会保留两次扫描的问题对比信息,Fortify会自动标记每个问题的age属性:

FPRUtility -merge -project new_scan.fpr -source old_scan.fpr -output merged_scan.fpr

说明:合并后的merged_scan.fpr里,age:new代表最新扫描新增的问题,age:existing代表历史已存在的问题。

3. 查询并判断是否存在新问题

用FPRUtility的query命令筛选age:new的问题,通过输出文件的内容来判断是否有新问题:

FPRUtility -query -project merged_scan.fpr -filter "age:new" -output new_issues.txt

然后在脚本里做判断(以Shell脚本为例):

if [ -s new_issues.txt ]; then
  # 存在新问题,触发新问题报表生成逻辑
  echo "检测到新安全问题,生成对应PDF报表"
else
  # 无新问题,触发无新问题报表生成逻辑
  echo "最新扫描无新问题,生成确认PDF报表"
fi

小技巧:-s用来检查文件是否非空,比单纯判断文件存在更可靠,避免空文件干扰判断。

4. 生成对应PDF报表

根据判断结果,调用Fortify的ReportGenerator工具生成不同的PDF:

有新问题时的报表

可以专门生成只包含新问题的明细报表,方便开发排查:

ReportGenerator -format pdf -f new_issues_report.pdf -source merged_scan.fpr -filter "age:new" -template "Developer Workbook"

无新问题时的报表

可以生成简洁的汇总报表,适合同步给管理层:

ReportGenerator -format pdf -f no_new_issues_report.pdf -source merged_scan.fpr -template "Executive Summary" -title "最新扫描无新安全问题"

说明:-template参数可以选择Fortify自带的模板,Developer Workbook侧重问题细节,Executive Summary侧重汇总信息,你也可以自定义模板适配需求。

5. 自动化脚本封装

把上面的步骤整合成可复用的Shell脚本(Windows下可以用批处理或PowerShell):

#!/bin/bash

# 定义文件路径
OLD_FPR="old_scan.fpr"
NEW_FPR="new_scan.fpr"
MERGED_FPR="merged_scan.fpr"
NEW_ISSUES_TXT="new_issues.txt"

# 合并新旧FPR文件
echo "正在合并新旧扫描文件..."
FPRUtility -merge -project $NEW_FPR -source $OLD_FPR -output $MERGED_FPR

# 查询新增问题
echo "正在检测新问题..."
FPRUtility -query -project $MERGED_FPR -filter "age:new" -output $NEW_ISSUES_TXT

# 判断并生成对应报表
if [ -s $NEW_ISSUES_TXT ]; then
  echo "发现新问题,生成问题明细报表..."
  ReportGenerator -format pdf -f new_issues_report.pdf -source $MERGED_FPR -filter "age:new" -template "Developer Workbook"
else
  echo "无新问题,生成安全确认报表..."
  ReportGenerator -format pdf -f no_new_issues_report.pdf -source $MERGED_FPR -template "Executive Summary" -title "最新扫描无新安全问题"
fi

# 清理临时文件(可选)
rm $MERGED_FPR $NEW_ISSUES_TXT
注意事项
  • 确保Fortify CLI的环境变量已配置,FPRUtility和ReportGenerator能直接在命令行调用;
  • 旧FPR里标记的误报会被保留到合并后的文件中,所以新报表不会包含已确认的误报;
  • 可以根据需求调整筛选条件,比如加上status:open只关注未关闭的问题。

内容的提问来源于stack exchange,提问作者S Ligade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:39:10