Fortify中文网站 > 最新资讯 > Fortify如何核查污点分析路径 Fortify数据流路径中断时如何定位关键调用
教程中心分类
Fortify如何核查污点分析路径 Fortify数据流路径中断时如何定位关键调用
发布时间:2026/10/31 13:55:13

  变量进入封装函数后,路径里只剩一条调用记录,未必表示分析已经停止。Fortify展示的是与问题有关的证据,不是完整的运行日志。关于“Fortify如何核查污点分析路径Fortify数据流路径中断时如何定位关键调用”,下面以Audit Workbench英文界面为例说明。

  一、Fortify如何核查污点分析路径

 

  先确认告警来自数据流分析,再检查输入、处理过程和危险操作。并非每类告警都有完整的源到汇路径。

 

  1、打开结果并对照扫描源码

 

  本地代码已经修改,旧FPR中的行号便可能对不上,核查前要确认扫描对应的提交。

 

  ①打开待核查FPR,在【Issues】中选择目标告警,记录类别、文件和问题标识。

 

  ②查看【Details】中的说明,在【Source Code】中对照相关代码。

 

  ③比较扫描任务与本地源码版本;不一致时,切换到对应提交再查。

 

  2、沿路径检查数据怎样传递

 

  变量改名不等于换了一份数据。函数接收输入后,要继续看参数、字段和返回关系。

 

  ①在【Analysis Trace】中依次选择节点,对照源码确认输入源、赋值、调用和危险操作。

 

  ②查看参数流向;遇到类似functionA(x:y)的记录,核对数据从哪个参数、返回值或对象字段传到哪里。

 

  ③展开节点下的子项及支持性证据,记录关键调用前后的变量和处理逻辑。

 

  ④核对过滤函数是否处理了本条路径实际使用的值,以及处理方式是否适用于当前风险。

 

  3、定位关键函数的调用与声明

 

  路径跳到封装函数时,可以从函数视图核查调用位置及匹配规则。

 

  ①点击【Options】→【Show View】→【Functions】,找到对应函数。

 

  ②右键选择【Find Usages】,在【Search】中点击结果;有源码定义时,使用【Open Declaration】查看实现。

 

  ③右键选择【Show Matched Rules】,记录匹配规则及规则包,结合路径判断函数承担的角色。

 

  二、Fortify数据流路径中断时如何定位关键调用

 

  记下最后一个能确认的节点,再列出其后预期出现的调用,围绕这个边界排查。

  1、判断是显示跳转还是缺少传播关系

 

  函数内部没有逐行显示,不能单独作为分析遗漏的依据。

 

  ①选中边界前后的【Analysis Trace】节点,比较参数、返回值和字段是否已经建立关系。

 

  ②在【Functions】中打开实现,检查数据是否原样返回、复制到成员,或写入另一对象。

 

  ③若没有对应告警,从源码列出预期的输入源、关键调用和危险操作,作为后续复核对象。

 

  2、检查关键实现是否参与翻译

 

  文件存在于仓库中,不代表它已进入本次分析。依赖解析失败,也可能影响调用关系。

 

  ①在扫描机器上执行sourceanalyzer-b build_id-show-files,将build_id换成实际构建标识,检查关键文件是否在列表中。

 

  ②执行sourceanalyzer-b build_id-show-build-warnings,查看翻译阶段的错误与警告。

 

  ③对照构建命令核对源码范围、排除配置、头文件及依赖库,确认调用对应的实现版本。

 

  ④修正输入后重新翻译和扫描,保留原始结果,不仅刷新Workbench的显示。

 

  3、核查动态调用与外部组件

 

  接口、反射、回调和跨进程传递,需要结合语言支持和扫描配置分别判断。

 

  ①核对实际实现类、方法重载及参数类型,排除同名但不同签名的函数。

 

  ②对回调和函数作为参数传递的代码,检查分析设置及超时记录;支持高阶分析的语言,还要核对该功能是否被关闭。

 

  ③数据经过消息队列、文件或数据库后被另一个程序读取时,分别检查两端,不假定一次扫描会自动连接跨进程路径。

 

  ④对缺少源码的组件,查明输入输出语义及规则覆盖情况,再决定是否需要补充建模。

 

  4、检查规则是否错误终止污点传播

 

  校验、编码和普通数据转换的作用不同。自定义规则把转换函数当成清洗函数,可能改变分析结果。

 

  ①在【Functions】中对目标函数执行【Show Matched Rules】,核对是否匹配了预期之外的规则。

 

  ②比较本次与历史扫描使用的工具版本、规则包及自定义规则,检查近期变更。

 

  ③在独立测试项目中验证输入到输出的实际关系,再调整对应传播或清洗规则。

 

  ④不为补齐路径而把所有函数设成输入源,也不通过添加清洗规则简单消除告警。

 

  三、Fortify路径核查后如何验证结论

 

  补齐文件或修正规则后,要确认变化来自哪项调整,同时保留仍然无法判断的部分。

 

  1、建立可以对照的最小样例

 

  样例保留关键调用方式,删除与数据传递无关的业务代码。

 

  ①保留相同输入源、封装函数及危险操作,使用相同工具和规则扫描。

 

  ②增加一个按当前风险要求正确处理数据的对照版本,检查两者结果是否符合预期。

 

  ③回到完整项目重新扫描,在【Analysis Trace】中复核传播关系,不只比较告警数量。

 

  2、记录关键调用和证据缺口

 

  审计记录应让接手的人知道查过什么,不能只写“路径不完整”。

 

  ①记录函数签名、调用位置、扫描版本、匹配规则和相关翻译警告。

 

  ②在【Audit】的评论区域写明确认依据;缺少外部组件实现或运行证据时,注明待补内容后保存。

  总结

 

  希望这篇关于“Fortify如何核查污点分析路径Fortify数据流路径中断时如何定位关键调用”的内容能帮到大家。安全分析需要工具提供线索,也需要开发与审计人员共同理解业务。面对复杂代码,有时需要多花一些时间核实细节,清楚的依据能让讨论更有效,也方便后续维护。日常经验积累下来,团队对问题的判断会更有把握,修复工作也更容易落实。希望大家在实际项目中有所收获,把安全要求融入持续的开发协作。有Fortify软件版本、授权配置或部署方面的需求,欢迎联系我们进一步了解。

176 5129 0128