路径级持久化模糊测试:XSSky 如何精准击破 XSS 漏洞

" 跨站脚本攻击(XSS)长期以来都是PHP** Web 安全领域最顽固、最常见的漏洞类型之一。现有检测技术主要分为两类:动态分析能够生成 PoC,但覆盖率不足;静态分析覆盖全面,但严重依赖 sanitizer 建模,易产生误报与漏报。那么,是否可以融合二者优势,在保证覆盖率的同时提供可验证的漏洞证明?研究者提出了一个全新的解决方案:XSSky,一种基于路径持久化模糊测试的 XSS 漏洞检测框架。 "**

  • 📄 论文标题:XSSky: Detecting XSS Vulnerabilities through Local Path-Persistent Fuzzing

01---方法介绍

根据OWASP可以将sink上下文分为四种主要类型,如图1所示。

图1. 每种sink上下文类型的示例

XSSky的核心思想非常清晰:利用静态分析定位 source-sink 路径,再对每条路径进行"本地化、持久化、上下文敏感"的模糊验证。

整体流程可以概括为三步:

① 路径定位

基于静态分析工具获取潜在 source-sink 路径。

② PUT 构建

将路径转换为可独立执行的 Program Under Test(PUT)。

③ 路径持久化模糊

针对该路径进行上下文感知 fuzzing,验证是否可构造有效 PoC。

图 2. Dolibarr(5.5k stars)中发现的一个持续存在的XSS漏洞示例;已于2022年6月13日完全修复

小结:不再"盲目探索整个程序",而是"精准围绕单条路径验证漏洞存在性"。

02---关键机制

  1. 路径持久化模糊测试(Path-Persistent Fuzzing), 只围绕目标 source-sink 路径执行,避免无关代码干扰。
  2. PUT 本地化转换策略, 自动补全未定义变量与函数,解决静态路径不可执行问题。
  3. Sink 上下文感知 Exploit Grammar, 针对 HTML、URL、Attributes、JS 四类上下文设计专属攻击模板。
  4. 基于 PHP 解释器的反馈引导, Hook preg_replace 等函数,精准定位 sanitizer 拦截字符。
  5. Sanitizer 可绕过验证机制, 不依赖建模假设,直接通过输入构造验证漏洞存在。
模块 设计思路 作用
PUT 转换模块 补全未定义变量与函数 生成可独立执行的局部代码片段
路径持久化 Fuzzing 避免探索无关路径 提升模糊效率与吞吐率
Sink 上下文分析 运行时 DOM 解析 识别 HTML / URL / JS 等上下文
解释器反馈机制 Hook PHP 字符串函数 精准识别 sanitizer 拦截位置
自动化漏洞判定 Selenium 监听弹窗 生成可验证 PoC

小结:XSSky 通过"路径级执行 + 解释器级反馈",构建了一个可证明漏洞存在性的检测框架。

03---实验结果

XSSky的路径定位阶段在复用TChecker 的基础上修改其提前终止策略,使其能够完整报告包含净化器的潜在易受攻击路径;PUT转换阶段基于代码属性图(CPG)开展分析;模糊测试阶段实现了汇点上下文分析、变异策略与模糊测试流程以及错误预言机等关键模块。数据集包含20个流行的PHP Web应用程序,主要实验结果如下。

(1)实验通过PUT模糊测试评估了XSSky在检测数据集中的XSS漏洞方面的有效性,结果如表1所示。总体而言,确认60/74(81.08%)的报告确实为跨站脚本(XSS)漏洞。

表1. 评估数据集的细分以及XSSky检测到的XSS漏洞

(2)实验比较了XSSky与两种基线方法(静态检测器和动态测试器)在检测XSS漏洞方面的有效性,实验结果见表2。XSSky在检测XSS漏洞方面优于多个基线方法,其精确度提高了11.48% ~642.49%,召回率提高了87.51% ~172.70%。

表2. XSSky与SOTA技术之间的有效性对比。

(3)实验通过在数据集上进行端到端分析评估了XSSky的效率。实验结果见表3。总体而言,XSSky花费了平均3.74小时从数据集中检测目标应用程序的XSS漏洞。在路径定位模块中,每个应用程序的平均时间约为0.56小时;PUT转换模块是一项相对耗时的任务,平均每个应用程序需要2.72小时。PUT Fuzzing模块,在目标应用中测试所有PUT平均耗时0.46小时。

表3. XSSky分析每个应用程序的性能按不同模块细分,包括平均值、中位数和中位数绝对偏差(MAD)。

**小结:**XSSky将静态分析器识别出的source---sink路径转换为可在本地执行的PUT,并采用一种由PHP解释器反馈引导的路径保持式模糊测试策略。该设计避免了繁琐的净化器建模过程,同时增强了静态检测器识别存在缺陷净化器的能力。

📌 总结

XSSky 的真正突破在于:它不再假设 sanitizer 是安全的,也不依赖复杂建模,而是用"路径级 PoC 生成"直接证明漏洞存在。这种"静态定位 + 局部动态验证"的混合范式,为 Web 漏洞检测提供了一种全新的工程化思路。

📣 欢迎留言讨论

  • 你认为路径级 fuzzing 是否可以推广到 SQL 注入或 SSTI 检测?

  • 解释器反馈机制是否可以扩展到其他语言(如 Node.js / Python?

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

相关推荐
云道轩2 小时前
DeepSeek using Claude Code 重构Oracle Fusion/SAP最佳业务实践:输入并补充Oracle Fusion 安全用户文档
安全·重构·oracle fusion
向哆哆2 小时前
高质量人体检测与行人识别数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·目标检测·分类
红信鸽2 小时前
2026 年 AI 钓鱼攻击现状与防御深度解析
网络安全
大鱼>3 小时前
AI+货物追踪:贵重物品智能追踪系统
人工智能·深度学习·算法·机器学习
大鱼>3 小时前
AI+货物追踪:集装箱智能追踪系统
人工智能·深度学习·算法·机器学习
流浪法师123 小时前
数据分类分级治理实践:从发现到管控的全链路记录
安全
SLD_Allen3 小时前
阿里开源的安全沙箱解决方案 OpenSandbox
安全·开源·沙箱
烬羽4 小时前
200 行代码复刻 Cursor 核心:手把手写一个 Coding Agent 🔧
深度学习·架构·设计
技术不好的崎鸣同学4 小时前
[ACTF2020 新生赛]Include 思路及解法
算法·安全·web安全