Page 202 - 《软件学报》2026年第7期
P. 202
毛祥煜 等: 面向 Web 应用漏洞检测的多数据流静态分析方法 2887
vulnerabilities that require multiple asynchronous calls to be triggered. Horizontally, the multi-tag data flow analysis is introduced to
distinguish different input sources via taint tags, thereby obtaining more detailed program context semantic information and enhancing
vulnerability detection Precision related to complex semantics. Based on the above-mentioned method, a vulnerability detection prototype
system named MultiFlow is developed for Java/JavaScript Web applications. Experimental evaluations demonstrate that MultiFlow’s multi-
data flow analysis method features sound effectiveness on a dataset containing 60 real-world Web applications and third-party components,
yielding Precision of 87.18%, 75.00%, and 83.72% respectively on complex Web vulnerability detection tasks including stored
vulnerabilities, broken access control, and prototype pollution, with eight CVE IDs obtained. Compared with the existing methods,
MultiFlow achieves higher Precision and Recall with less analysis overhead, thereby validating its practical significance.
Key words: Web application security; vulnerability detection; static analysis; taint analysis; data flow analysis
随着互联网技术的快速发展, Web 应用程序已成为各行业数字化转型的核心载体, 广泛应用于金融、医疗、
政务及电子商务等领域. 然而, 其开放性和复杂性使得 Web 应用面临日益严峻的安全威胁. 根据开放式 Web 应用
程序安全项目 (Open Web Application Security Project, OWASP) 发布的 Top 10 Web 安全风险报告 [1] , 越权 (broken
access control)、敏感数据泄露 (sensitive data exposure)、注入式攻击 (injection) 等安全问题位居前列, 成为最主要
的 Web 漏洞类型. 若未能及时检测并修复这些漏洞, 将导致敏感数据大规模泄露、关键业务系统瘫痪乃至基础设
施被恶意接管, 持续威胁数据资产安全与数字服务的完整性.
Web 漏洞检测的主要技术包括静态应用安全测试 (static application security testing, SAST)、动态应用安全测
试 (dynamic application security testing, DAST)、交互式应用安全测试 (interactive application security testing, IAST)、
渗透测试 (penetration testing) 与模糊测试 (fuzz testing) 等. 其中, DAST 与 IAST 技术通过运行时监控机制, 对程序
执行路径、代码行为及数据进行实时观测, 从而识别可外部触发的安全缺陷. 但两类技术的检测效果高度依赖测
试用例的完备性, 难以覆盖所有代码分支, 且需构建完整运行环境导致检测开销显著增加; 渗透测试与模糊测试技
术采用模拟攻击者视角的策略, 通过人工构造攻击载荷或自动化生成变异输入数据, 触发潜在的程序异常. 二者虽
能准确识别可实际触发的漏洞, 但存在计算资源消耗大、分析效率低下的缺陷, 尤其在处理复杂程序时检测成本
呈指数级增长. 相较之下, SAST 技术通过分析源代码、字节码或二进制文件检测漏洞, 无须运行程序即可执行分
析, 显著降低检测开销; 此外, SAST 技术能够实现更加全面的代码路径覆盖, 可给出漏洞代码精确位置, 适合在软
件开发早期阶段快速定位潜在风险, 减少修复成本, 符合“安全左移 (shift-left security)”的开发理念, 这些特性使得
SAST 技术被大型开发团队广泛应用于持续集成/持续交付 (CI/CD) 流程中. 据相关报告显示, 全球 SAST 工具市
场规模在 2023 年已达到 6.21 亿美元 [2] , 并以 7.1% 的复合年增长率持续扩张.
现有 SAST 技术的底层原理通常采用基于污点分析 (taint analysis) 的漏洞检测算法, 即通过追踪程序中污点
源 (Source) 至污点汇 (Sink) 的污点传播路径, 判断是否存在安全漏洞. 然而, 传统污点分析在设计上仅关注单次程
序执行路径中的单一类型污染数据流, 无法有效处理现代 Web 应用中的异步请求过程 (例如存储型 XSS (cross-
site scripting) 漏洞场景下, 对输入内容的持久化存储与读取)、多类型输入数据源 (例如越权访问场景下, 用户输入
与 Cookie/Session 信息的交互验证) 等复杂程序逻辑, 导致其在面对复杂类型 Web 漏洞场景时能力受限, 存在较
高的漏报率与误报率. 近年来, Web SAST 领域的相关研究普遍聚焦于改进污点分析算法的具体实现 [3−9] , 而对于
算法底层设计及 Web 场景下的局限性缺少充分认知; 针对异步 Web 请求间的隐式数据依赖问题, 部分工作采用
启发式建模策略 [10−12] 对持久化存储前后的污染数据流进行关联, 来检测存储型 XSS 等漏洞, 但此类方案大多数仅
能在特定语言环境下生效, 跨语言迁移成本较高, 不具备通用性; 针对 Web 应用的多源输入语义差异问题, 现有
Web 静态分析研究中同样缺乏有效的解决方案, 而二进制领域的相关工作 [13−18] 多基于内存单元或寄存器执行细
致化污染标记, 不符合 Web 应用安全特性, 在工业级规模 Web 应用场景下将面临分析开销爆炸问题.
鉴于此, 本文提出一种基于多数据流分析的 Web 应用静态检测方法. 该方法通过纵向和横向扩展传统污点分
析算法, 使其具备检测复杂类型 Web 安全漏洞的能力. 具体而言, 在纵向维度上, 本文增强了污染传播分析流程,
通过引入多段数据流分析技术, 综合考虑多条异步控制流路径上的数据共享与依赖关系; 在此基础上, 设计了关联
与迭代分析算法, 能够精准检测异步控制流中潜在的存储型安全漏洞. 在横向维度上, 本文对污点概念进行了精细

