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  安全漏洞的能力. 具体而言, 在纵向维度上, 本文增强了污染传播分析流程,
                 通过引入多段数据流分析技术, 综合考虑多条异步控制流路径上的数据共享与依赖关系; 在此基础上, 设计了关联
                 与迭代分析算法, 能够精准检测异步控制流中潜在的存储型安全漏洞. 在横向维度上, 本文对污点概念进行了精细
   197   198   199   200   201   202   203   204   205   206   207