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 节相同的
分析步骤.

