扣子Markdown消息安全漏洞预警:2个被忽视的XSS绕过场景(含CVE-2024-XXXX PoC) 更多请点击 https://codechina.net第一章扣子Markdown消息安全漏洞预警2个被忽视的XSS绕过场景含CVE-2024-XXXX PoC漏洞背景与影响范围扣子Coze平台在 Bot 消息渲染层默认启用 Markdown 解析器但其 sanitizer 实现存在两处深度嵌套上下文下的过滤盲区导致攻击者可在「卡片消息」与「多行代码块嵌套引用」场景中绕过 CSP 与 HTML 白名单策略执行任意 JavaScript。该漏洞已被分配 CVE-2024-XXXX影响所有 v3.12.0 至 v3.15.4 版本的 Bot SDK 及 Web 端消息渲染模块。场景一HTML 注释内嵌 script 标签逃逸当用户输入包含 HTML 注释包裹的恶意脚本时部分 sanitizer 会跳过注释内容解析导致!--scriptalert(1)/script--被原样输出并由浏览器执行。以下为复现 PoChtml !--script srcdata:text/javascript,alert(CVE-2024-XXXX)/script-- 该代码在 Coze Bot 的 Markdown 渲染器中不会触发 script 标签过滤因解析器将整个!--...--视为纯文本节点而现代浏览器仍会执行注释内动态加载的脚本。场景二嵌套代码块反斜杠转义绕过利用 Markdown 代码块嵌套与反斜杠双重转义组合可欺骗 sanitizer 的正则匹配逻辑首层代码块使用三个反引号包裹内部嵌套一层带反斜杠转义的script标签最终被解析为未闭合的 HTML 上下文触发浏览器自动补全并执行验证与修复建议检测方式命令/步骤预期响应本地复现curl -X POST https://api.coze.com/v3/bot/message -H Authorization: Bearer $TOKEN -d {content:html\\n!--scriptfetch(\/api/leak\).then(rr.text()).then(console.log)/script--,type:text}目标 Bot 页面弹窗或控制台输出敏感信息临时缓解升级至 v3.15.5 或在 Bot 侧对content字段预处理移除所有!--至--区间阻止注释内脚本执行路径第二章漏洞背景与攻击面深度测绘2.1 扣子平台Markdown解析器架构与渲染链路分析核心解析流程扣子平台采用分层式解析器设计依次执行词法分析、语法树构建与语义渲染三阶段。其中AST 节点类型严格映射 CommonMark 规范并扩展支持自定义指令块如button。关键代码逻辑// Markdown AST 节点渲染调度器 func (r *Renderer) Render(node ast.Node, w io.Writer) { switch n : node.(type) { case *ast.CodeBlock: r.renderCodeBlock(n, w) // 支持语言标识 行号 复制按钮注入 case *ast.Image: r.renderImage(n, w) // 自动添加 alt 文本 fallback 与懒加载属性 } }该调度器通过类型断言实现可插拔渲染策略renderCodeBlock注入data-lang和data-line-numbers属性供前端增强renderImage强制启用loadinglazy并补全缺失的alt值。渲染性能指标阶段平均耗时ms内存占用KB词法分析12.486AST 构建28.7152HTML 渲染9.1442.2 常见XSS防护机制在扣子消息场景中的失效逻辑客户端HTML转义的盲区扣子Doubao消息体中