IPBUF安全漏洞报告
English
CVE-2026-33395 CVSS 4.4 中危

CVE-2026-33395 Discourse Graphviz插件存储型XSS漏洞

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-33395
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Discourse Graphviz Plugin

相关标签

XSSStored XSSDiscourseGraphvizCSPWeb Security

漏洞概述

Discourse是一款开源论坛平台,其 discourse-graphviz 插件在特定版本之前存在存储型XSS漏洞。该漏洞允许经过身份认证的低权限用户通过精心构造的DOT图定义注入恶意JavaScript代码。此漏洞仅影响未启用内容安全策略(CSP)的Discourse实例。攻击者可利用此漏洞在目标用户的浏览器环境中执行恶意脚本,从而窃取会话凭证、篡改用户数据或执行其他未授权操作。

技术细节

该漏洞源于 discourse-graphviz 插件在处理用户输入的 DOT 语言图形定义时,缺乏严格的输入过滤和输出编码。攻击者首先需要注册并登录获取低权限账户,随后在发布内容时嵌入带有恶意载荷的 DOT 代码(例如在节点标签中注入 HTML/JS)。当服务器处理并存储该内容后,一旦其他用户(特别是管理员)访问包含该恶意图形的页面,且该实例未配置 CSP 策略,浏览器便会解析并执行注入的恶意脚本。由于是存储型 XSS,恶意代码会持久化存储在数据库中,具有持续的攻击能力。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册获取 Discourse 论坛的低权限用户账号。
STEP 2
2. 构造恶意载荷
攻击者编写包含恶意 JavaScript 代码的 DOT 语言图形定义。
STEP 3
3. 注入存储
攻击者发布包含恶意 DOT 代码的帖子或评论,数据被存储在服务器数据库中。
STEP 4
4. 触发漏洞
受害者(如管理员或其他用户)浏览包含恶意图形的帖子页面。
STEP 5
5. 执行攻击
由于目标实例未启用 CSP,浏览器解析恶意脚本并执行,攻击者获取受害者权限或数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC Concept for CVE-2026-33395 // Inject malicious script via DOT graph definition // Payload to be sent in a Discourse post (using Graphviz syntax) let payload = ` [graphviz] digraph G { Node [label="<script>alert('XSS');</script>"]; } [/graphviz] `; // Explanation: // If CSP is disabled, the browser renders the label as HTML, // executing the alert('XSS') function in the victim's context.

影响范围

Discourse < 2026.3.0-latest.1
Discourse < 2026.2.1
Discourse < 2026.1.2

防御指南

临时缓解措施
对于无法立即升级的实例,建议立即启用内容安全策略(CSP)来阻止恶意脚本的执行。如果 CSP 配置复杂,应作为临时措施禁用 discourse-graphviz 插件以切断攻击面。

参考链接

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