有目标地“撞”漏洞:分层调度如何提升 Web 定向模糊测试效率

“ 在 Web 漏洞检测领域,模糊测试早已成为发现安全缺陷的重要手段。然而,与传统二进制程序不同,Web应用具有状态复杂、路径众多、输入空间庞大等特点,使得“盲目fuzz”往往效率低下。为此,研究者提出了定向模糊测试:通过优先探索更可能触达漏洞的路径,加速漏洞暴露过程。但在 Web 场景下,新的问题随之出现:如何在大量候选路径与请求序列中,合理分配fuzzing 资源?

针对这一核心挑战,论文提出了一种结合分层调度的 Web 定向模糊测试框架,从调度策略层面系统性提升漏洞发现效率。 ”

  • 📄 论文标题:Effective Directed Fuzzing with Hierarchical Scheduling for Web Vulnerability Detection

  • 📅 发表时间: 34th USENIX Security Symposium,2025

  • 🏫 作者单位:复旦大学

  • 💡开源代码: 

        https://zenodo.org/records/15128608

01—方法介绍

图1a展示了一个包含多个Web入口点和两个汇点位置(即执行安全敏感操作的代码位置)的Java Web应用示例。在第10行和第15行中,Java方法 deptMapper.updateDept 和deptMapper.deleteDept是潜在的 SQL注入汇点,因为底层数据库操作的配置使用了不安全的 ${params.dataScope} 占位符,该占位符会将参数值直接注入到 SQL 语句中(见图 1b 第 3 行)。

该示例中仅有一条从特定 Web 入口到 SQL 注入汇点的路径是真正可利用的,但传统固定调度策略对所有入口点均匀探索,无法区分高风险与低风险路径,导致资源浪费并降低漏洞检测效率。

图片

图 1. 来自真实世界的漏洞示例

该工作的核心思想是:将Web模糊测试中的“探索对象”进行层次化建模,并在不同层级上实施差异化调度策略,从而避免资源被低价值路径消耗。

整体方法可概括为三层调度流程:

① 目标层调度

根据潜在漏洞位置或敏感功能,对测试目标进行优先级排序。

② 路径层调度

在 Web 应用路径空间中,优先选择更可能触达目标的执行路径。

③ 输入层调度

对具体 HTTP 请求参数与输入变异进行精细化控制。

图片

图 2. WDFUZZ架构

小结:不再“所有请求一视同仁”,而是让 fuzzing 资源用在“更有希望”的地方。

02—关键机制

  1. Web场景下的定向模糊测试建模,弥补现有方法偏向二进制程序的不足。
  2. 分层调度策略设计,系统性解决资源分配问题。
  3. 多维反馈驱动调度,动态调整 fuzzing 重点。
  4. 良好的通用性,可与现有 Web fuzzing 框架集成。

      层级

      调度依据

      作用

      目标层

      漏洞相关性、敏感接口

      明确 fuzzing 的整体方向

      路径层

      路径覆盖、距离目标的相似度

      减少无效路径探索

      输入层

      参数结构与历史反馈

      提升单次请求的触发概率

      小结:分层调度的关键在于“由粗到细”逐步聚焦漏洞触发条件。

      03—实验结果

      实验选择了具有代表性的流行Java Web应用程序评估WDFUZZ。对于开源应用程序,选择了11个在GitHub上获得超过2000颗星的应用程序。对于闭源应用程序,考虑了3个使用常见Web框架开发且已公开披露漏洞的目标应用程序。此外,还纳入了WebGoat项目(一个专门为安全培训目的而精心设计的易受攻击的应用程序)。数据集总共包含68个已知漏洞,涵盖了多种漏洞类型,如SQL注入、命令注入、任意文件读写、SSRF(服务器端请求伪造)和SSTI(服务器端请求伪造注入)。

      (1)为了评估WDFUZZ的漏洞检测能力,在从各种Java Web应用程序中收集的真实世界漏洞基准数据集上,对WDFUZZ和Witcher(Toss a fault to your witcher: Applying grey-box coverage-guided mutational fuzzing to detect SQL and command injection vulnerabilities)进行了全面比较。商业闭源web应用程序的名称和版本由于法律原因而匿名。

      表1. WDFUZZ的漏洞检测结果。

      图片

      (2)实验评估涉及将WDFUZZ部署到各种应用程序中,以检测先前未知的零日漏洞,从而证明其在真实场景中的有效性。

      如图5a所示,该漏洞源于第8行页面方法中的不安全SQL语句拼接。该漏洞要求模糊测试器构造一个复杂的JSON载荷,其字段必须遵守特定的语义约束,如图5b所示。输入的结构必须使其绑定到PageParams类,且模型字段是BaseEmployeePageQuery的实例。要触发第12行的SQL注入漏洞,模型对象中的scope字段必须精确设置为字符串“1”,表示常量BIND。

      WDFUZZ成功发现了这一漏洞,而Witcher则未能检测到。主要原因在于,该模糊测试器能够准确生成所需的嵌套JSON结构,同时满足字段的语义约束,并通过了应用程序的验证,从而有效地暴露了SQL注入漏洞。

      图片

      图3.  WDFUZZ在lamp-boot中发现的一个真实世界漏洞

      小结:WDFUZZ能够有效地提取参数结构和语义约束,并采用了一种新颖的分层调度策略来对种子进行优先级排序。WDFUZZ在真实世界的Web应用程序发现的漏洞数量是最先进的Web模糊测试工具的3.2倍,同时漏洞识别时间减少了87.69%。WDFUZZ已成功在真实世界的应用程序中发现了92个先前未知的漏洞,并获得了19个CVE或CNVD ID分配。

      📌 总结

      本文从调度策略的角度重新审视了 Web 模糊测试问题。通过引入分层调度机制,研究者有效缓解了 Web 定向 fuzzing 中的路径爆炸与资源浪费问题。

      该工作表明,在 Web 漏洞检测中,更智能的调度策略是释放模糊测试潜力的重要突破口。 

      📣 欢迎留言讨论

      • 你认为定向 fuzzing 在 Web 场景中最大的瓶颈是什么?

      • 分层调度是否会引入新的工程复杂度?

      📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值