Fortify中文网站 > 使用教程 > fortify增量扫描漏扫怎么办 fortify增量扫描范围如何校验
教程中心分类
fortify增量扫描漏扫怎么办 fortify增量扫描范围如何校验
发布时间:2026/04/22 16:21:12

  Fortify做增量扫描时,最容易误判的地方,不是结果里“少了几个问题”,而是没先分清到底是增量基线没立住,还是翻译阶段本身就没有把文件真正收进本次扫描。Fortify官方手册对这条链写得很清楚,增量分析要先做一次带`-incremental-base`的完整扫描,后续再用同一个build ID做`-incremental`;同时,翻译阶段到底收进了哪些文件,可以直接用`-show-files`和`-show-build-warnings`去核对。也就是说,漏扫问题先查翻译范围,再查增量口径,通常会比直接怀疑规则包更快。

  一、fortify增量扫描漏扫怎么办

 

  增量扫描漏扫时,先不要急着重跑全量,更稳的顺序是先核对基线、再核对build ID、最后看本次翻译是否真的覆盖了全部需要比较的源码。因为官方手册已经明确写到,增量扫描不是只扫“你这次提交的目录”,而是建立在此前完整基线和本次重新翻译整个项目之上的。

 

  1、先确认第一轮是不是用`-incremental-base`建过基线。

 

  Fortify官方手册明确要求,增量分析的起点是先做一次完整扫描,并用`-incremental-base`建立基线;如果这一步没做,或者基线结果文件没有延续使用,后续增量结果就很容易失真。

 

  2、后续扫描必须沿用同一个build ID。

 

  官方文档写得很直接,后续所有增量扫描都要使用初次完整分析时的同一个build ID。只要build ID变了,Fortify就会把它当成另一套翻译会话,前后结果自然对不上。

 

  3、本次改完代码以后,仍要重新翻译整个项目。

 

  这是很多人最容易漏的一步。官方手册明确说明,做后续`-incremental`之前,要先重新翻译整个项目,而不是只翻译改过的少数文件。少翻了文件,增量分析就可能直接漏掉真正受影响的调用链和依赖关系。

 

  4、先查构建集成是不是把文件漏在翻译阶段。

 

  如果你走的是Gradle这类构建集成,官方旧版手册已经提醒,构建集成下不支持的语言文件可能会在没有报错的情况下不被翻译,这些文件后面自然也不会被分析。漏扫看起来像是增量问题,实际根子可能在翻译入口就已经丢了。

 

  二、fortify增量扫描范围如何校验

 

  校验扫描范围,最有效的办法不是看命令行里自己写了什么,而是看Fortify最终认进build ID的文件列表。当前官方文档对这一步给了很明确的入口,`-show-files`可以直接列出某个build ID下被翻译进来的文件,`-show-loc`可以看本次翻译代码量,`-show-build-warnings`可以看翻译阶段的警告和错误;如果结果已经生成FPR,还可以在Audit Workbench的Certification里看文件清单、规则包、运行参数和翻译告警。

 

  1、先用`-show-files`看本次到底扫进了哪些文件。

 

  官方文档说明,`-show-files`会显示指定build ID下的文件列表;这一步最适合核对某个目录、某类文件、某个模块到底有没有进本次翻译。范围校验时,先看这个,比盯着扫描结果数量猜更准。

  2、再用`-show-loc`看代码量有没有明显异常。

 

  官方文档说明,`-show-loc`可以显示本次翻译代码量。一次扫描如果LOC比预期低很多,通常就不是“漏洞刚好少”,而更像是翻译范围本身收窄了。

 

  3、再看`-show-build-warnings`和日志。

 

  Fortify官方手册明确写到,翻译阶段的warning和error可以通过`-show-build-warnings`查看,默认日志则在项目根目录下生成`sca.log`和`sca_FortifySupport.log`。范围校验时,这一步特别重要,因为很多文件不是被扫描器主动忽略,而是翻译时已经报错跳过。

 

  4、排除规则要结合构建方式一起核对。

 

  当前官方属性文档明确说明,`-exclude`只在非构建集成翻译时稳定生效;接入大多数编译器或构建工具后,编译器真正处理到的源文件仍可能被翻译,只是较新的26.1文档又补充说明Ant、Bazel、Gradle、Maven这些集成已支持`-exclude`。所以范围校验时,不能只看有没有写排除规则,还要看当前用的是哪种构建接入方式。

 

  三、fortify增量扫描基线怎么收

 

  真正想让增量扫描长期稳定,关键不是每次临时排查,而是先把基线口径收住。更稳的做法通常是这样,主分支定期跑完整基线,日常改动沿用同一个build ID做增量,范围校验固定用`-show-files`、`-show-loc`和翻译日志三件套,结果复核则看Audit Workbench的Certification。Fortify官方对这些入口都已经给了标准说明,所以把它们收成固定动作,通常会比每次出问题再临时猜快很多。

 

  1、主分支要定期重建完整基线。

 

  增量扫描的前提始终是有一份可信的完整基线。只要主线经历了大规模重构、依赖切换或构建方式变化,就更适合重新做一次`-incremental-base`,而不是无限叠加旧基线。这个做法和官方增量分析口径是一致的。

 

  2、范围校验动作固定化。

 

  每次扫描后都固定跑一遍`-show-files`和`-show-loc`,再抽查日志,比等到“感觉漏扫了”再排查要稳得多。因为这两项本来就是官方给出的build ID校验入口。

 

  3、结果复核不要只看问题数量。

 

  官方文档说明,FPR的Certification里可以看到文件清单、规则包、运行参数、翻译和分析中的告警。也就是说,结果复核真正该看的是“这次扫了什么、用了什么口径”,而不是只看漏洞数是不是涨了或降了。

 

  4、日志和构建参数要留档。

 

  当前官方文档已经把默认日志、支持日志和`-logfile`、`-debug`、`-verbose`这些入口都列出来了。把build ID、翻译命令、排除规则和日志一起留档,后面再回看某次漏扫,才容易判断是代码没翻进去,还是增量口径本身出了问题。

  总结

 

  fortify增量扫描漏扫怎么办,先查基线是否正确建立,再查build ID是否复用,最后查本次是不是重新翻译了整个项目。fortify增量扫描范围如何校验,最直接的办法则是用`-show-files`、`-show-loc`、`-show-build-warnings`和FPR的Certification把本次翻译范围与分析口径对清。把基线、范围、日志这三层先收顺,增量扫描通常会比单纯盯结果数量更容易管稳。

135 2431 0251