当前位置: 首页 > news >正文

扣子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 会跳过注释内容解析,导致<!--<script>alert(1)</script>-->被原样输出并由浏览器执行。以下为复现 PoC:
```html <!--<script src="data: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<!--<script>fetch(\'/api/leak\').then(r=>r.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-langdata-line-numbers属性供前端增强;renderImage强制启用loading="lazy"并补全缺失的alt值。
渲染性能指标
阶段平均耗时(ms)内存占用(KB)
词法分析12.486
AST 构建28.7152
HTML 渲染9.144

2.2 常见XSS防护机制在扣子消息场景中的失效逻辑

客户端HTML转义的盲区
扣子(Doubao)消息体中,`
http://www.jsqmd.com/news/1213047/

相关文章:

  • 收藏家的资产护航:亨得利“名表鉴定+保养+闲置唤醒”全周期服务 - 亨得利官方维修中心
  • 排序算法大全:从冒泡到快排,LeetCode排序题高效解法
  • 如何快速配置venv-selector.nvim:5分钟从零开始指南
  • 如何轻松下载在线视频:N_m3u8DL-CLI-SimpleG 新手完全指南
  • Steam创意工坊免费下载神器WorkshopDL:跨平台模组获取终极指南
  • 西门子S7-1200 PLC控制步进电机实战指南
  • 《中转站图片文本》三、ArkTS编译错误修复指南
  • Obsidian PDF++终极指南:如何在Obsidian中实现原生PDF标注与知识连接
  • Dante Cloud监控优化:10个提升监控系统性能与准确性的实用技巧
  • 2026年北京青鸟校区排名(优选前三名) - IT培训品牌推荐
  • Oden核心组件解析:编译器架构与中间表示(IR)的设计思想
  • 宇舶中国官方售后服务中心|全新热线及维修地址权威信息公示(2026年7月最新) - 亨得利官方服务中心
  • CC32xx微控制器架构解析与嵌入式物联网开发实战指南
  • Three.js游戏开发实战:从基础3D展示到动漫风格交互小游戏
  • 如何快速定制监控界面:打造个性化服务器状态面板的完整指南
  • 深入解析Express中间件机制与实现原理
  • h4xx0r项目探秘:为什么这个网页敢公开演示XSS和用户追踪?
  • st终端与窗口管理器集成:打造完美的工作流环境
  • N_m3u8DL-CLI-SimpleG:图形化M3U8下载器的终极解决方案
  • Sunshine游戏串流终极指南:如何打造完美私人云游戏平台
  • 马鞍山防水补漏公司推荐+2026年7月份价格透明实测:靠谱商家避坑全指南 - 家居避坑指南
  • 3种高效方法解决MelonLoader Cpp2IL下载失败问题
  • 协同过滤算法的电影推荐系统
  • Android平台libvpx编译指南与优化实践
  • 深入EHCI寄存器:USB 2.0高速通信的硬件调试与性能优化指南
  • 汽车音响老店亲测,2026年5月案例分享汽车音响首推杭州冉起 - GrowUME
  • 端口代理---iProxy工具
  • Python3内置函数详解与实战技巧
  • 机器狗360度超级视觉:多传感器融合与全景感知的导航革命
  • Sa-Token v1.42.0:Java权限认证框架的API Key与TOTP实现