IPBUF安全漏洞报告
English
CVE-2026-8656 CVSS 6.1 中危

CVE-2026-8656: jsondiffpatch 存储型 XSS 漏洞

披露日期: 2026-05-16

漏洞信息

漏洞编号
CVE-2026-8656
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
jsondiffpatch

相关标签

XSSCross-site ScriptingjsondiffpatchJavaScriptCWE-79DOM-based XSS

漏洞概述

jsondiffpatch 0.7.6 之前的版本存在跨站脚本(XSS)漏洞。由于带注释的格式化程序未正确清理 JSON 值和属性名称,当应用比较不受信任的 JSON 数据并将输出渲染到 DOM 时,攻击者可注入恶意 HTML,导致 XSS 攻击。

技术细节

该漏洞的核心在于 jsondiffpatch 库中的“带注释的格式化程序”(Annotated Formatter)未能正确对 JSON 数据中的特殊字符进行转义。在生成 HTML 格式的差异报告时,如果 JSON 对象的属性名或属性值中包含恶意的 HTML/JavaScript 代码(例如 `<img src=x onerror=alert(1)>`),这些代码会被原样保留在生成的 HTML 字符串中。当应用程序将这段未经净化的 HTML 插入到页面的 DOM 结构中时,浏览器会将其解析为可执行代码。攻击者无需经过复杂认证,只需诱导用户访问包含恶意 JSON 处理结果的页面,即可触发攻击。由于存在范围改变(S:C),该漏洞可能不仅影响当前用户,还可能波及与其交互的其他用户上下文,造成信息泄露。

攻击链分析

STEP 1
1. 侦察
攻击者识别出目标应用程序使用了 jsondiffpatch 库(< 0.7.6)来处理并展示 JSON 数据的差异。
STEP 2
2. 构造载荷
攻击者构造包含恶意 HTML/JavaScript 代码的 JSON 对象,将载荷嵌入到对象的键名或值中。
STEP 3
3. 提交载荷
攻击者通过应用程序的输入接口(如 API 请求、表单提交)将恶意 JSON 数据发送给服务器。
STEP 4
4. 数据处理与渲染
服务器端应用使用 jsondiffpatch 处理数据,并将生成的 HTML 输出直接渲染到响应页面中,未进行额外的转义。
STEP 5
5. 执行攻击
受害者的浏览器接收到响应,解析其中的恶意脚本并执行,导致 Cookie 窃取或会话劫持等后果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-8656: jsondiffpatch XSS // Requires vulnerable version of jsondiffpatch (< 0.7.6) const jsondiffpatch = require('jsondiffpatch'); const formatters = require('jsondiffpatch/formatters'); // 1. Create a sample diff involving malicious data // The key contains an XSS payload const left = { "safe_key": "safe_value" }; const right = { "safe_key": "safe_value", "<img src=x onerror=alert('CVE-2026-8656')>": "malicious" }; // 2. Generate the delta const delta = jsondiffpatch.diff(left, right); // 3. Format the delta using the annotated formatter // This formatter is vulnerable as it does not sanitize keys/values const htmlOutput = formatters.annotated.format(delta); // 4. Simulate rendering to DOM (Vulnerability Trigger) // In a real app, this would be document.body.innerHTML = htmlOutput; console.log("Generated HTML:", htmlOutput); // If the output is rendered, the alert box would appear. // To test, one would typically run this in an environment where the HTML is rendered.

影响范围

jsondiffpatch < 0.7.6

防御指南

临时缓解措施
如果无法立即升级,建议禁用带注释的格式化程序(annotated formatter),改用纯文本格式化程序,或者在渲染 HTML 输出之前使用 DOMPurify 等库对输出内容进行服务器端或客户端的清洗,以去除潜在的恶意脚本。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表