Page 215 - 《软件学报》2026年第7期
P. 215

2900                                                       软件学报  2026  年第  37  卷第  7  期


                                             表 2    基准漏洞数据集测试结果对比        (续)

                                                 Coverity       CodeQL          Tai-e        MultiFlow
                      漏洞类型          CWE编号
                                              TP   FP   FN   TP   FP   FN   TP   FP   FN   TP   FP   FN
                  trust boundary violation  CWE-501  83  30  0  83  24  0   49   29   34   83   12    0
                    secure cookie flag  CWE-614  36  0  0     36   0    0   -    -    -    36    0    0
                    XPATH injection  CWE-643  15   15   0     15   7    0   15   14   0    15    2    0
                             合计              1 364  398  51  1 243  343  43  860  698  42  1 375  144  40
                       精确率 (%)/召回率 (%)          77.41/96.40    78.37/96.66    60.34/75.06    90.52/97.17
                           F1分数 (%)               85.87          86.56          66.90          93.73
                 注: “-”表示对比工具 (Coverity、CodeQL、Tai-e) 的官方规则库未支持当前漏洞类型的检测, 故未产生相关检测数据
                  4.3   RQ2: 多段数据流分析方法评估
                    本节基于真实应用数据集中的            Java Web  项目, 对  MultiFlow  的多段数据流分析方法的漏洞检测能力开展评
                 估. 在漏洞规则配置上, 为评估算法         1  对传统污点分析产生的增益效果, 本文以如下两种方式配置 MultiFlow                 的分
                 析漏洞规则集.
                                R base : 与第  4.2  节相似, 配置各类常见  Web  漏洞的传统污点分析规则.
                    (1) 基础规则集
                                           R base  基础上, 增加与  Mybatis Mapper 框架相关的共享数据操作配置.
                    (2) 多段数据流规则集      R all : 在
                    在评估漏洞检测结果的准确性时, 遵循如下步骤: 对于                 MultiFlow  检测到的所有漏洞, 将由    3  位安全专家对漏
                 洞报告独立进行分析, 标注是否为真实漏洞; 之后, 将对所有专家的漏洞标注结果执行交叉验证, 若存在不一致情
                 况则引入第    4  位安全专家进行额外讨论, 确定该漏洞的最终标注结果.
                    30  个  Java Web  项目的分析结果如表    3  所示, 在使用基本漏洞规则      R base  时, MultiFlow  共检测到  21  例安全漏
                 洞, 总体检测精确率为       95.24%; 在添加共享数据相关规则配置后, MultiFlow        即可额外检测到      39  例数据库存储型
                 Web  漏洞, 其具体类型包括     XSS、SSRF、远程代码执行和         URL  重定向 (redirect) 漏洞, 漏洞覆盖能力得到极大提
                 升, 但在检测精确率上略有下降 (约为           87.18%). 这些结果充分证明, 本文提出的多段数据流分析方法可有效地扩
                 展传统污点分析的漏洞覆盖场景, 同时具备较好的泛用性.


                                            表 3 MultiFlow  多段数据流分析测试结果

                                        MultiFlow   × R base                  MultiFlow   × R all
                   漏洞类型
                              检测总数      TP     FP   Precision (%)  检测总数  (∆)  TP  (∆)  FP  (∆)  Precision (%)
                     XSS         9       9     0       100.00      23 (14)    21 (12)  2 (2)    91.30
                     SSRF        10      9     1       90.00       29 (19)    26 (17)  3 (2)    89.66
                     RCE         0       0     0        -           1 (1)     1 (1)    0 (0)    100.00
                  URL redirect   2       2     0       100.00       7 (5)     6 (4)    1 (1)    85.71
                     合计          21     20     1       95.24       60 (39)    54 (34)  6 (5)    90.00
                 注: “-”表示在使用基础漏洞规则集时未检测到远程代码执行漏洞, 故相关指标不适用

                    ● 误报分析. 对于    MultiFlow  的  6  例误报, 其主要原因在于域敏感分析实现上的精确度局限性. 如第               2.1.1  节所
                 述, MultiFlow  在获取共享数据的详细存储位置, 以及从共享数据读取操作中恢复污染变量时, 均依赖于细粒度域
                 敏感分析. 若污染变量为       Java 容器类或数组等代码元素, 在后续分析中可能出现动态键值访问 (即键值索引在运
                 行时通过动态表达式生成) 的情况, MultiFlow        难以精确建模此类非确定性键值的传播路径, 采取整体污染的保守
                 策略, 导致错误扩大污染范围产生误报. 未来可基于常量传播、符号执行等技术, 进一步增强对键值的静态推断能
                 力, 提升分析精确率.
                  4.4   RQ3: 多标签数据流分析方法评估
                    本节将从越权访问和原型链污染两类漏洞检测任务出发, 评估第                      2.1.2  节所述多标签数据流方法在真实应用
   210   211   212   213   214   215   216   217   218   219   220