Page 213 - 《软件学报》2026年第7期
P. 213
2898 软件学报 2026 年第 37 卷第 7 期
量停止, 从而提取恶意输入的传播路径. 对于多段数据流分析结果, 漏洞追踪树将展示完整的跨控制流污染传播路
径, 并标注共享数据写入与读取的关键节点; 对于多标签数据流分析结果, 漏洞追踪树将显示传播路径中各污染变
量对应的污染标签, 以及跨标签的污染传播过程.
4 实验分析
为了全面评估 MultiFlow 在 Web 安全漏洞检测任务上的综合表现, 本节将探讨并回答如下 4 个研究问题.
● RQ1: 相较于现有方法, MultiFlow 的 Web 漏洞检测基础性能如何? 此问题将基于漏洞检测准召率指标, 综
合对比 MultiFlow 与现有 Web 应用静态分析工具在不同类型 Web 漏洞检测任务上的整体能力表现.
● RQ2: MultiFlow 的多段数据流分析方法表现如何? 该问题旨在验证第 2.1.1 节中多段数据流分析方法的漏
洞检测性能, 评估其是否能够有效地扩展传统污点分析的异步追踪能力, 实现对存储型 Web 漏洞的检测支持.
● RQ3: MultiFlow 的多标签数据流分析方法表现如何? 该问题旨在验证第 2.1.2 节中多标签数据流分析方法
的漏洞检测性能, 评估其是否能够增强传统污点分析的语义表征能力, 实现对复杂类型 Web 漏洞检测支持.
● RQ4: MultiFlow 的漏洞检测效率表现如何? 该问题旨在验证 MultiFlow 及其核心方法是否能够高效地完成
漏洞检测任务, 进而满足工业级规模 Web 应用场景下的分析需求.
4.1 实验设计
● 对比方法选取. 本文综合考虑学术界与工业界各类方法的先进性、分析场景支持能力与编程语言通用性,
选取以下几款具备代表性的 Web 静态应用安全测试工具作为比较对象.
[23]
(1) CodeQL . CodeQL 是一款由 GitHub 研制的静态代码分析工具, 其支持多种编程语言, 且拥有较大规模的
开源社区规则库, 已具备非常广泛的使用场景. CodeQL 的主要工作原理为将代码转化为可查询的数据库形式, 并
使用 Datalog [24] 模式的自定义查询语言 (QL) 构建相关规则, 挖掘代码缺陷或安全漏洞.
(2) Coverity [25] . Coverity 是一款基于高级静态分析技术的软件质量与安全检测工具, 其核心功能聚焦于源代
码层级的缺陷检测与安全漏洞识别. 该工具通过布尔可满足性验证算法, 对 C、C++、Java 等多种语言代码进行
深度分析, 精准定位内存泄漏、空指针解引用、并发竞争条件及输入验证漏洞等复杂问题.
(3) Tai-e . Tai-e 是一款面向 Java 应用的静态程序分析框架, 其系统整合了 Soot、WALA、Doop 和 SpotBugs
[3]
等经典框架的最佳设计理念, 具备高效性、易用性和高度可扩展性. Tai-e 的核心设计包含基于创新的中间表示形
式、强大的指针分析框架和可扩展的分析插件系统, 支持指针分析、污点分析和控制流/数据流分析等多种静态
分析技术, 可有效识别程序中的缺陷和安全漏洞.
● 数据集构建. 为充分比较 MultiFlow 和现有方法在 Web 安全漏洞检测任务上的性能表现, 本文选取了知名
度较高的 Java Web 安全漏洞测试用例集合 OWASP benchmark [26] 作为基准漏洞数据集, 该数据集中共包含
2 740 个漏洞测试用例 (1 415 个正样本、1 325 个负样本), 涉及 SQL 注入、XSS、远程代码执行等 11 种常见
Web 安全漏洞类型, 可有效地测试各类 Web 应用静态分析工具的漏洞检测能力. 此外, 为评估 MultiFlow 中两种
多数据流分析方法的性能表现, 本文在 GitHub [27] 、NPM [28] 等开源代码仓库, 以及来自大型企业的闭源工业级应用
程序中, 选取具备一定规模与流行度的 Web 应用构建真实应用数据集, 共包含 30 个 Java Web 项目、10 个
JavaScript Web 项目和 20 个 JavaScript 第三方组件.
● 实验环境. 下文所有实验评估均在一台配备 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50 GHz 处理器 (75
核), 256 GB 内存的 Ubuntu 20.04.6 LTS 服务器上运行. 在实验评估中, 设置最大可用线程数为 8, 设置 Java 堆内存
上限为 6 GB, 使用的各工具版本分别为 CodeQL cli v2.19.0, Coverity 2024.12.1 和 Tai-e 0.5.1.
● 评价指标. 在 Web 安全漏洞检测任务中, 对于单个检测结果通常可分类为如下 4 种形式之一: (1) 真阳性
(true positive, TP), 指检测结果为存在漏洞、实际存在漏洞的样例; (2) 假阳性 (false positive, FP), 指检测结果为存
在漏洞、实际无漏洞的样例; (3) 假阴性 (false negative, FN), 指检测结果为无漏洞、实际存在漏洞的样例; (4) 真阴
性 (true negative, TN), 指检测结果为无漏洞、实际无漏洞的样例. 本文在评估 MultiFlow 和其他方法的漏洞检测

