Fortify中文网站 > 热门推荐 > Fortify自定义规则怎么创建 Fortify自定义规则不生效怎么排查
教程中心分类
Fortify自定义规则怎么创建 Fortify自定义规则不生效怎么排查
发布时间:2026/07/31 16:59:18

  Fortify内置规则覆盖面很广,但企业自研框架、封装接口和内部安全规范,未必都能被准确识别。这时可以补充自定义规则。处理“Fortify自定义规则怎么创建Fortify自定义规则不生效怎么排查”,建议先准备一段最小测试代码,确认规则能命中,再放进正式项目。

  一、Fortify自定义规则怎么创建

 

  自定义规则可以描述危险输入、敏感操作、净化函数,也可以检查特定函数调用和代码结构。创建前先说清楚规则想解决什么问题,别把几个检测目标硬塞进一条规则。

 

  1、先确定规则类型

 

  不同场景需要选择不同模板:

 

  (1)识别外部输入,可使用数据流源规则。

 

  (2)识别危险函数,可使用数据流汇规则。

 

  (3)声明校验或转义函数,可使用净化规则。

 

  (4)检查固定API、语句或代码结构,可选择语义、结构等规则。

 

  若目的是让Fortify理解企业封装的校验函数,可以从净化规则入手;若要发现内部危险接口,则更适合从数据流汇规则开始。Fortify的自定义规则工具支持创建和编辑扩展规则,用来补充自研代码及第三方库的行为信息。

 

  2、使用Custom Rules Editor创建规则

 

  ①打开【Fortify Custom Rules Editor】。

 

  ②新建自定义Rulepack。

 

  ③选择规则模板和目标语言。

 

  ④填写唯一的规则ID与漏洞分类。

 

  ⑤配置包名、类名、函数名或匹配条件。

 

  ⑥保存为XML或二进制规则包。

 

  函数、类和命名空间最好按真实代码填写。可以先写得精确一点,确认能命中后再逐步放宽。上来就使用大范围通配符,很容易把正常调用也扫进去。

 

  Custom Rules Editor提供图形化的规则创建与编辑界面。对应的自定义规则资料随SAST安装资源提供,当前工具包仍包含该编辑器。

 

  3、从Audit Workbench生成函数规则

 

  已经有扫描结果时,也可以直接从函数列表生成规则。

 

  ①使用Audit Workbench打开FPR。

 

  ②切换到【Functions】视图。

 

  ③找到需要描述的函数。

 

  ④右击并选择【Generate Rule for Function】。

 

  ⑤选择合适的规则模板。

 

  ⑥按向导填写参数并保存到自定义Rulepack。

 

  例如创建净化规则时,可以指定语言、包、类、函数及被净化的参数。完成后重新导入规则包并扫描,再用【Show Matched Rules】检查函数是否匹配到新规则。

 

  二、怎样让自定义规则参与Fortify扫描

 

  规则文件创建完成,只代表内容已经保存。扫描器没有加载对应Rulepack,结果里当然看不到变化。

 

  1、通过规则目录加载

 

  Fortify默认会从自定义规则目录读取规则文件,常用位置为:

 

  /Core/config/customrules

 

  ①将XML或BIN规则文件复制到该目录。

 

  ②确认运行扫描的账号有读取权限。

 

  ③关闭并重新打开相关工具。

 

  ④清理旧结果后重新扫描。

 

  ⑤查看日志中是否出现规则加载错误。

 

  Visual Studio等集成工具导入自定义安全内容后,也会将规则保存到该目录。支持导入的常见格式为XML和BIN。

  2、在命令行中指定规则文件

 

  流水线或多套规则并行测试时,可以在扫描命令中明确传入路径:

  -rules既可以指定单个规则包,也可以指定目录。传入目录后,扫描器会加载其中的XML和BIN文件;该参数也可以重复使用,从多个位置加载规则。

 

  3、在Audit Workbench中导入

 

  ①打开【Options】→【Options】。

 

  ②进入【Security Content Management】。

 

  ③点击【Import Custom Security Content】。

 

  ④选择自定义规则文件。

 

  ⑤确认导入后重新执行扫描。

 

  ⑥在函数视图或问题列表中核对结果。

 

  只刷新FPR界面不会重新分析代码。规则导入后,需要再次扫描,新的匹配结果才会写入项目。

 

  三、Fortify自定义规则不生效怎么排查

 

  规则没产生问题,并不一定是规则完全没有加载。它可能已经匹配到函数,只是数据流没有走到对应危险点。排查时要把“加载失败、匹配失败、未形成漏洞路径”分开看。

 

  1、先确认规则是否被加载

 

  ①检查规则文件路径和扩展名。

 

  ②确认CI节点使用的是同一份规则包。

 

  ③查看扫描日志中的XML、Rulepack和解析报错。

 

  ④检查规则ID是否重复。

 

  ⑤使用绝对路径重新执行一次扫描。

 

  ⑥必要时查看Custom Rules Editor日志。

 

  Custom Rules Editor日志通常位于用户目录下的Fortify日志文件夹,Windows中可在AppDataLocalFortify下查找对应版本的CRE日志。

 

  2、检查函数和语言匹配条件

 

  ①核对规则选择的编程语言。

 

  ②检查包名、命名空间和类名。

 

  ③确认函数名及参数数量。

 

  ④留意重载函数和静态方法。

 

  ⑤减少正则条件后重新测试。

 

  ⑥在【Functions】视图执行【Show Matched Rules】。

 

  如果这里能看到自定义规则ID,说明规则已经匹配函数。此时没有生成漏洞,可能是输入没有到达危险函数,或者净化函数已经中断数据流。规则匹配函数和最终产生问题,本来就是两个不同阶段。

 

  3、用最小代码隔离测试

 

  ①准备一个明确应当命中的测试文件。

 

  ②保留一条输入到危险点的简单路径。

 

  ③只加载当前自定义规则。

 

  ④加入-no-default-issue-rules减少干扰。

 

  ⑤扫描后检查FPR和函数匹配结果。

 

  ⑥通过后再放回完整项目。

 

  Fortify提供关闭默认问题规则、源规则或全部默认规则的扫描选项,适合单独验证自定义规则。测试完成后要恢复正常配置,避免正式扫描漏掉内置检测。

  总结

 

  “Fortify自定义规则怎么创建Fortify自定义规则不生效怎么排查”的关键,是把规则加载、函数匹配和漏洞路径分开验证。先用小样例跑通,再接入完整工程,定位会轻松很多。希望本文能为大家维护Fortify自定义规则提供参考,如需进一步了解相关内容,欢迎联系咨询。

135 2431 0251