Fortify中文网站 > 新手入门 > Fortify怎么配置扫描规则 Fortify扫描规则不生效如何排查
教程中心分类
Fortify怎么配置扫描规则 Fortify扫描规则不生效如何排查
发布时间:2026/08/28 16:51:08

  Fortify SAST的漏洞识别能力主要来自Rulepack,项目还可以额外加载自定义规则,用于补充企业内部安全规范、第三方框架或特殊函数的数据流模型。处理“Fortify怎么配置扫描规则,Fortify扫描规则不生效如何排查”时,需要区分默认Rulepack、自定义规则和结果过滤三个层面。规则文件虽然存在,但没有真正被当前扫描任务加载,或者分析器、扫描参数发生变化,都可能出现预期漏洞不再报告的情况。

  一、Fortify怎么配置扫描规则

 

  Fortify默认从安装目录加载Secure Coding Rulepacks,同时支持通过扫描参数加载额外的XML或BIN规则文件。当前OpenText SAST仍提供-rules参数指定自定义Rulepack或规则目录。

 

  1、先更新默认Rulepack

 

  长期没有更新安全内容时,新漏洞类型、框架模型和API规则可能无法识别,因此正式扫描前应先确认Rulepack版本。

 

  ①进入Fortify SAST安装目录下的【bin】目录。

 

  ②联网环境可以执行:

 

  fortifyupdate

 

  ③离线环境已经下载安全内容时,可以执行:

 

  fortifyupdate-import

 

  ④更新完成后重新启动扫描任务,不要只重新打开旧FPR判断规则是否变化。

 

  fortifyupdate用于下载或导入Fortify Secure Coding Rulepacks和相关安全内容,26.2版本仍采用这一更新方式。

 

  2、给项目加载自定义规则

 

  企业自行编写的规则不能只复制到项目源码目录,还要让扫描器明确加载。

 

  ①将自定义规则保存为Fortify支持的【XML】或【BIN】规则文件。

 

  ②本地SAST扫描时,在扫描命令中加入:

 

  sourceanalyzer-b MyProject-scan-rules custom-rules.xml-f result.fpr

 

  ③有多个规则文件时,可以重复使用-rules,也可以直接指定一个规则目录。

 

  ④使用规则目录时,检查目标XML或BIN确实位于该目录中。

 

  ⑤修改自定义规则后重新执行完整扫描,确认新生成的FPR使用的是最新规则文件。

 

  Fortify的-rules参数既可以指定单个Rulepack,也可以指定目录;指定目录后,会加载其中符合条件的XML和BIN规则。

 

  3、ScanCentral SAST要把规则传到实际扫描任务

 

  使用ScanCentral SAST时,真正执行分析的是Sensor,因此不能只检查开发电脑上的Fortify配置。

 

  ①在ScanCentral客户端命令中确认已经加入【自定义规则】。

 

  ②可以使用-rules把自定义规则指定给当前任务。

 

  ③需要传递SAST扫描参数时,通过-sargs设置相应分析参数。

 

  ④多个Sensor参与扫描时,检查各Sensor使用的SAST和安全内容版本是否一致。

 

  ScanCentral SAST支持直接通过-rules指定自定义规则,也支持通过-sargs传递Fortify SAST扫描选项。

 

  二、Fortify扫描规则不生效如何排查

 

  规则不生效最常见的表现是:明确存在的漏洞不再报告、自定义规则完全没有结果,或者升级扫描脚本后结果数量突然明显下降。此时先判断规则有没有被加载,再检查是不是扫描参数主动关闭了某类规则。

 

  1、检查是否禁用了默认规则

 

  Fortify提供多种参数用于关闭默认Rulepack,其中部分参数很容易在测试自定义规则后被遗留到正式扫描脚本中。

 

  ①搜索扫描命令是否包含【-no-default-rules】。

 

  ②如果存在,该参数会禁止默认Rulepack中的规则参与正常分析。

 

  ③再检查【-no-default-issue-rules】,它会关闭默认Rulepack中直接产生Issue的规则。

 

  ④检查【-no-default-source-rules】和【-no-default-sink-rules】,确认没有把数据流分析需要的Source或Sink规则关闭。

 

  ⑤修正参数后重新生成FPR,再与原扫描结果比较。

 

  Fortify官方将这些参数主要用于自定义规则测试和特定分析场景,因此正式扫描脚本中出现时尤其需要确认是否属于预期配置。

  2、检查分析器有没有被关闭

 

  规则已经加载,但对应分析器没有运行,同样可能得不到预期结果。

 

  ①检查扫描命令中的【-analyzers】设置。

 

  ②查看是否使用【-disable-analyzer】关闭了Dataflow、Controlflow、Semantic等分析器。

 

  ③数据流类漏洞没有结果时,优先确认【dataflow】分析器是否启用。

 

  ④结构或语义规则异常时,再对应检查【structural】和【semantic】。

 

  ⑤暂时恢复默认分析器执行一次对照扫描,判断结果是否恢复。

 

  Fortify当前支持针对buffer、content、configuration、controlflow、dataflow、semantic、structural等分析器进行选择,分析器配置会直接影响实际运行的检测能力。

 

  3、检查结果是不是被过滤了

 

  有时规则实际已经命中,但结果在扫描或查看阶段被过滤,看起来也像规则没有生效。

 

  ①检查扫描命令是否使用【-filter】。

 

  ②打开对应Filter文件,查看是否排除了目标漏洞类别、目录或文件。

 

  ③暂时移除【结果过滤】后重新扫描。

 

  ④在Audit Workbench或SSC中检查当前视图条件,确认没有只显示部分严重级别或审计状态。

 

  ⑤用漏洞类别、文件名和函数名搜索FPR,判断问题是“未生成”还是“未显示”。

 

  Fortify的-filter属于结果过滤参数,因此排查规则时应把规则执行和结果展示分开判断。

 

  三、怎么确认扫描规则已经真正生效

 

  完成配置调整后,最好不要直接使用大型业务项目判断。建立一个能够明确触发目标规则的最小测试代码,更容易区分规则、分析器和项目代码本身的问题。

 

  1、建立规则验证用例

 

  ①准备一段能够稳定触发目标漏洞的【最小测试代码】。

 

  ②使用默认规则执行一次扫描,并保存【基准FPR】。

 

  ③加入自定义Rulepack后,用完全相同的代码和扫描参数再次分析。

 

  ④对比两份FPR中的【漏洞类别】【规则命中位置】和数据流路径。

 

  ⑤自定义规则仍不出现时,再查看详细扫描日志,确认对应规则文件是否被读取。

 

  2、统一本地扫描和CI扫描环境

 

  ①记录本地使用的【SAST版本】和【Rulepack版本】。

 

  ②再检查CI或ScanCentral Sensor中的版本。

 

  ③本地能够命中、CI不能命中时,优先比较【规则文件】【扫描参数】和【安全内容版本】。

 

  ④团队确定稳定配置后,将Rulepack版本和扫描命令纳入项目配置管理,避免不同环境各自调整。

 

  这样能够把规则变化与代码变化分开,后续升级Fortify或安全内容时,也更容易判断扫描结果变化是否符合预期。

  总结

 

  Fortify扫描规则是否有效,取决于规则内容、分析器和实际扫描环境能否形成一致的检测链路。遇到漏洞数量异常或自定义规则没有结果时,单纯反复修改规则文件往往难以定位原因,更可靠的方法是通过基准用例和统一扫描环境确认规则实际执行状态。稳定管理Rulepack版本和扫描配置,也有助于保持不同开发阶段安全结果的可比性。如需进一步了解Fortify扫描规则配置、自定义Rulepack加载与规则不生效排查,欢迎联系咨询。

135 2431 0251