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

毛祥煜 等: 面向   Web  应用漏洞检测的多数据流静态分析方法                                              2901


                 中的漏洞检测能力与效率表现.
                  4.4.1    越权访问漏洞检测
                    如第  2.2.2  节所述, MultiFlow  越权访问漏洞检测算法中的核心概念为基于可信源与用户输入的鉴权操作识
                 别, 故本节在评估     MultiFlow  所使用多标签数据流分析方法对于越权访问漏洞的检测性能时, 将同时从鉴权操作
                 识别和漏洞检测两个维度出发, 讨论 MultiFlow         的性能表现.
                    ● 鉴权操作识别. 在     30 个  Java Web 应用中, MultiFlow  共识别到  13 457 处鉴权操作, 包含  11 217 处垂直鉴权与
                 2 240  处水平鉴权. 为评估识别效果, 本文从所有结果中抽样             5%  进行人工分析, 判断其中的真实鉴权逻辑样本, 将
                 真实样本占总样本的比例作为鉴权操作识别精确率指标. 详细分析结果如表                         4  所示, MultiFlow  在鉴权操作识别上
                 取得了 85.29%  的总体精确率表现, 且对于水平鉴权的识别精确率高于垂直鉴权. 这表明在越权漏洞检测任务中,
                 基于可信源的多标签数据流分析算法可有效地识别代码中的鉴权相关操作.

                                               表 4 MultiFlow 鉴权操作识别结果

                            鉴权操作类型          识别总数          样本数        真实样本数          Precision (%)
                              垂直鉴权I          10 757        538          454           84.39
                              垂直鉴权II          460          23           19            82.61
                              水平鉴权I           1 592        79           73            92.41
                              水平鉴权II          643          32           27            84.38
                             水平鉴权III           5            1            1             100
                                合计           13 457        673          574           85.29

                    ● 越权漏洞检测. 表     5  展示了  MultiFlow  的越权漏洞扫描结果. MultiFlow  在  30  个  Java Web  应用中共检测出
                 31  例垂直越权漏洞和     9  例水平越权漏洞, 总体精确率为        75%. 其中, 10  例误报的详细归因分析如下.

                                               表 5 MultiFlow 越权漏洞检测结果

                              漏洞类型           检测数量           TP          FP         Precision (%)
                              垂直越权             31           23          8            74.19
                              水平越权              9            7          2            77.78
                               合计              40           30          10           75.00

                    ● 垂直越权误报 (8     例). 均来自对业务允许的非敏感资源或公开数据进行增删改                    (如日志数据库的写入/插
                 入等). 这类操作风险较低、无须鉴权, 但“是否需要鉴权”的判断依赖业务逻辑语义与设计文档等外部信息;
                 MultiFlow  目前仅基于程序代码开展分析, 难以准确判断, 因而将其误判为需鉴权的敏感操作. 未来工作中, 可引入
                 基于  LLM  的语义识别, 对操作的敏感性与鉴权需求进行筛选 (结合命名、注释、调用上下文及外部文档), 以提升
                 检测精确率.
                    ● 水平越权误报 (2    例). 由鉴权操作识别遗漏导致. 如第          2.2.2  节所述, 除在业务代码中显式校验外, 鉴权还可
                 能通过中间件、拦截器、注解/AOP、统一网关等机制在非显式控制流中完成. 由于缺乏对相应鉴权模式的充分
                 覆盖, 以及复杂隐式控制流关系的解析能力, MultiFlow            在分析敏感操作时将相关路径误判为“未鉴权”, 从而产生
                 误报. 后续工作中, MultiFlow   将完善鉴权模式库与各类框架/中间件的适配, 强化对跨层调用与集中式鉴权                         (如网
                 关、全局拦截器) 的建模与解析, 降低鉴权漏识率并提升精确率.
                  4.4.2    原型链污染漏洞检测
                    本节基于真实应用数据集中的 JavaScript Web 项目和开源第三方组件开展实验评估. 考虑到                        CodeQL 官方
                 规则库中包含原型链污染漏洞相关规则, 此处将额外对比                    MultiFlow  与  CodeQL  的漏洞检测能力. 在 MultiFlow
                 的漏洞规则配置上, 当分析目标为           Web  项目时, 使用基本的用户输入污点源配置; 分析目标为第三方组件时, 则
                 额外将所有的外部可访问          API 参数配置为用户输入污点源. 在对检测结果进行验证时, 遵循与第                     4.3  节相同的
                 分析步骤.
   211   212   213   214   215   216   217   218   219   220   221