aj2108/CVE-2026-9806
GitHub: aj2108/CVE-2026-9806
该项目文档化了 CTI Transmute 通知面板中由 innerHTML 不当渲染导致的存储型 XSS 漏洞,并提供根因分析与修复方案。
Stars: 0 | Forks: 0
# CVE-2026-9806
CVE-2026-9806 是一个存储型跨站脚本攻击(Stored XSS)漏洞,影响修复版本之前的 CTI Transmute 版本。该缺陷存在于通知面板中,包含用户可控的转换名称的通知消息通过 innerHTML 渲染在通知铃铛下拉菜单中,且没有进行适当的过滤。如果攻击者能够创建或影响出现在通知中的转换名称,当已认证用户打开通知面板时,任意 JavaScript 就可以在其浏览器中执行。
NVD 尚未分配自己的 CVSS 评估。
受影响的软件
属性 值 产品 CTI Transmute 受影响版本 修复版本之前的版本 受影响组件 通知面板 漏洞类型 存储型跨站脚本攻击(Stored XSS)漏洞类型
类别:存储型跨站脚本攻击(Stored XSS) CWE-79:网页生成时输入的不当中和处理(跨站脚本攻击)根本原因
通知面板使用 innerHTML 构建通知条目。通知消息包含用户可控的转换名称。由于这些值在未进行 HTML 编码或过滤的情况下直接插入到 DOM 中,转换名称中包含的任何 HTML 或 JavaScript 都会被浏览器解释执行。 概念上: ``` Attacker creates or influences a convert name │ ▼ Convert name stored in notification │ ▼ User opens notification panel │ ▼ Notification rendered using innerHTML │ ▼ Browser parses HTML │ ▼ Embedded JavaScript executes ``` 该漏洞是由于将不可信输入作为 HTML 而不是纯文本渲染导致的。攻击流程
``` Attacker │ ▼ Creates or modifies a malicious convert name │ ▼ Notification containing the convert name is generated │ ▼ Victim opens notification panel │ ▼ Notification dropdown inserts message using innerHTML │ ▼ Browser executes malicious JavaScript │ ▼ Actions performed within victim's authenticated session ```攻击场景
假设创建了一个名称中包含特殊构造的 HTML 的转换。 随后,另一个已认证用户收到了引用该转换的通知。当用户点击通知铃铛时,应用程序使用 innerHTML 将通知消息插入到页面中。 浏览器没有将转换名称作为文本显示,而是将其解释为 HTML 并执行嵌入的 JavaScript,从而允许攻击者在受害者的浏览器会话中执行操作。影响
成功利用此漏洞可能允许攻击者:- 在已认证用户的浏览器中执行任意 JavaScript。
- 使用受害者的会话执行操作。
- 访问应用程序可用的敏感信息。
- 通过受害者的权限修改应用程序数据。
严重程度
| 指标 | 分数 | ```
|---|---|
| CVSS v4.0 (CNA) | 6.3 (Medium) |
概念性易受攻击代码
注意: 供应商尚未发布确切的易受攻击源代码。以下演示了易受攻击的模式。 ``` // User-controlled convert name const message = response.notificationMessage; // Unsafe rendering notificationDropdown.innerHTML += `
${message}
`;
```
为什么存在漏洞
innerHTML 将通知消息视为 HTML。如果消息包含源自恶意转换名称的 HTML 或 JavaScript,浏览器将解析并执行它。修复后的代码(概念性)
``` const notification = document.createElement("div"); notification.className = "notification"; // Safe rendering notification.textContent = response.notificationMessage; notificationDropdown.appendChild(notification); ```为什么此修复有效
使用 textContent 可确保通知消息作为纯文本而不是 HTML 渲染。如已发布的修复方案所述,该问题已通过使用 DOM 方法构建通知元素并通过 textContent 而不是 innerHTML 分配内容来修复,从而防止了嵌入脚本的执行。标签:CVE-2026-9806, Web安全, 多模态安全, 数据可视化, 漏洞, 蓝队分析, 跨站脚本(XSS)