Page 219 - 《软件学报》2026年第7期
P. 219
2904 软件学报 2026 年第 37 卷第 7 期
表 9 MultiFlow 多数据流分析效率统计
分析总用时 (s) 每代码行用时 (ms)
漏洞类型 应用分组 代码行总数
MultiFlow CodeQL MultiFlow CodeQL
数据库存储型 30 Java Apps 2 253 984 1 049.48 - 0.466 -
越权访问 30 Java Apps 2 253 984 1 029.30 - 0.457 -
20 NPM packages 121 576 62.47 154.10 0.514 1.268
原型链污染
10 JavaScript Apps 1 314 020 533.362 606.87 0.406 0.462
注: “-”表示在数据库存储型与越权访问漏洞检测任务的实验评估中未使用CodeQL工具进行对比实验, 故无相关分析用时数据
考虑多标签数据流分析方法, MultiFlow 在分析效率上同样取得了优异表现: 在越权访问检测任务中, MultiFlow
分析耗时为 0.457 ms/LOC, 相较于基础污点分析的额外开销为 4.04%, 主要与污点传播追踪过程中对可信源的处
理相关; 在原型链污染检测任务中, MultiFlow 对于 JavaScript 项目和第三方组件的分析效率存在一定差异, 用时
分别为 0.514 ms/LOC 和 0.406 ms/LOC, 这主要来源于二者的漏洞规则配置差异, 即 MultiFlow 针对第三方组件的
分析规则中配置了更多的用户输入污点源模式, 分析过程中相应地涉及更多的污染传播步骤; 相较于 CodeQL,
MultiFlow 实现了更高的分析效率, 同一应用分组下效率可提升 1.13–2.46 倍. 此外可以发现, 虽然 Java 与 JavaScript
的语言特性存在较大差异, 但得益于 MultiFlow 采用了基于抽象语法树遍历的分析方式, 分析效率上较为接近. 综
合上述结果, 可认为 MultiFlow 的多标签数据流分析方法能够以较小的额外开销, 实现对 Web 应用中不同语义数
据的细粒度表征, 有效提升工业级场景下 Web 漏洞检测能力.
5 讨 论
5.1 有效性威胁
本节主要讨论方法有效性的几个可能威胁.
● 评估数据集构成. 使用不同的评估数据集, 可能产生不同的检测结果. 本文在构建实验评估数据集时, 选取
了若干具备代表性的工业界真实 Web 应用与第三方组件, 可认为基于这些应用的相关评估结论具备普遍性与泛
用性.
● 分析效率评估结果. 考虑到服务器性能波动、漏洞扫描规则差异等因素, MultiFlow 的分析效率评估结果可
能存在一定偏差; 本文在评估分析效率时, 采用多次运行扫描流程并取用时平均值的方式, 在一定程度上可客观反
映不同方法的实际效率表现.
● 漏洞规则有效性. 对于多数据流污点分析方法, 其漏洞检测能力将受到规则中配置的准确性影响, 如存储型
Web 漏洞检测算法依赖于对应用中数据库框架的准确建模, 或是越权漏洞检测算法的效果依赖于规则中与可信源
相关的污点源模式配置是否准确. 在实际使用过程中, 可通过框架建模、专家经验、LLM 辅助等方式, 识别相关
的程序代码模式, 辅助提高多数据流分析算法的精确率.
5.2 算法复杂度分析
本节讨论两类多数据流分析算法以及 MultiFlow 的分析时间复杂度表现. 讨论时统一使用如下符号约定: 给
P 和漏洞规则, E 代表程序的控制流图规模, 具体而言可表示控制流图中的基本块数量或控制流边
定待分析程序
数; S source = |Source| 与 S sink = |Sink| 分别代表漏洞规则中污点源模式、污点汇模式的数量; V 代表程序控制流图中
V ∼ E (一个控制流基本块对应单个或多个语句); V t 代表分析结束
的总节点数, 可近似为程序中的语句数量, 满足
后的污染节点 (语句) 数量, 在程序中总体呈稀疏分布, 满足 V t ≪ V.
5.2.1 传统污点分析
考虑图 2 中传统污点分析算法各个阶段的时间开销, 设每个污点源/污点汇模式的匹配开销为 O(1).
● 污点源匹配阶段. 需对所有程序语句节点判断其是否包含任一污点源, 匹配次数上界为 S source V.
V 相关 τ(E,V) 表示), 具体取值则由算法中采用的数据流
● 污点传播追踪阶段. 其总体时间开销与 E 和 (下文使用

