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 和      (下文使用
   214   215   216   217   218   219   220   221   222   223   224