“ 在 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—关键机制
- Web场景下的定向模糊测试建模,弥补现有方法偏向二进制程序的不足。
- 分层调度策略设计,系统性解决资源分配问题。
- 多维反馈驱动调度,动态调整 fuzzing 重点。
- 良好的通用性,可与现有 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 场景中最大的瓶颈是什么?
-
分层调度是否会引入新的工程复杂度?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!


303

被折叠的 条评论
为什么被折叠?



