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 和其他方法的漏洞检测
   208   209   210   211   212   213   214   215   216   217   218