# 思源笔记 /api/icon/getDynamicIcon XSS漏洞
## 概述
SiYuan 是一款个人知识管理系统,其 3.5.4 版本之前存在反射型跨站脚本漏洞,位于 `/api/icon/getDynamicIcon` 接口。
## 影响版本
3.5.4 版本之前的 SiYuan 版本。
## 细节
该漏洞出现在 `/api/icon/getDynamicIcon` 接口,当生成文本图标(type=8)的 SVG 图像时,`content` 查询参数被直接插入 SVG 的 `<text>` 标签中,未进行 XML 转义处理。由于响应的 `Content-Type` 为 `image/svg+xml`,攻击者可通过注入恶意标签破坏 XML 结构,实现 JavaScript 代码执行。
## 影响
攻击者可构造恶意请求,利用未过滤的 SVG 输入在用户浏览器中执行任意 JavaScript 代码,导致反射型 XSS 攻击。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Do not execute scripts in serving SVG by default to prevent XSS · Issue #16844 · siyuan-note/siyuan -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **Issue Title**: Do not execute scripts in serving SVG by default to prevent XSS
- **Issue Number**: #16844
- **Status**: Closed
- **Author**: 88250
- **Created**: 4 days ago
- **Labels**: Enhancement
- **Milestone**: 3.5.4
- **Related GHSA Vulnerabilities**:
- GHSA-pcqj-j3mq-jv5j
- GHSA-w836-5qpm-7r93
- **Issue Description**: 设置 - 编辑器 - 允许执行 SVG 脚本,默认不勾选,即不允许脚本执行,从服务端伺服的 assets/xxxx.svg 会剔除其中的脚本。
- **Commits**:
- Do not execute scripts in assets SVG by default to prevent XSS #16 (Verified)
- Do not execute scripts in serving SVG by default to prevent XSS #1 (Verified)
- **Comments**:
- @YuxinZhaozyx又被提到,关心插件是否受此影响
- GoVulnBot提及在一个可能的Go漏洞中提到了此问题
- **Assignees**: 88250
- **Participants**: 88250, TCOTC, GoVulnBot
标题: Reflected Cross-Site Scripting (XSS) via /api/icon/getDynamicIcon · Advisory · siyuan-note/siyuan · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息:
**漏洞类型**:
- 反射型跨站脚本攻击 (Reflected Cross-Site Scripting, XSS)
**受影响版本**:
- v3.5.3
**修复版本**:
- v3.5.4
**CVE ID**:
- CVE-2026-23847
**漏洞细节**:
- 由于未对输入的SVG内容进行处理,`/api/icon/getDynamicIcon`接口将查询参数直接插入SVG标签中。
- 响应的Content-Type为`image/svg+xml`,注入未转义的标签会破坏XML结构并执行JavaScript。
**PoC (概念验证)**:
- Payload: `test</text><script>alert(window.origin)</script><text>`
- 步骤:
1. 打开任意笔记并点击更改图标->动态(文本)。
2. 更改颜色并将Payload粘贴到自定义字段,点击此图标。
3. 在DevTools中截取请求或从路径中获取。
4. 打开URL后执行JavaScript Payload。
**影响**:
- 如果SVG被直接加载,就可在用户会话上下文中任意执行JavaScript,防止在图标的文本中使用合法字符如`<`和`>`。
**报告者**:
- jaroslaw-wawiorka
**严重程度**:
- 中等
标题: :lock: Do not execute scripts in serving SVG by default to prevent XS… · siyuan-note/siyuan@5c0cc37 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 漏洞关键信息总结
### 修复描述
- **提交信息**:`Do not execute scripts in serving SVG by default to prevent XSS #16844`
- **提交人**:88250
- **提交时间**:两天前
### 漏洞细节
- **漏洞类型**:跨站脚本攻击(XSS)
- **漏洞位置**:`kernel/api/icon.go` 文件中的 `getDynamicIcon` 函数
### 修复代码
- **新增代码**:
```go
if !model.Conf.Editor.AllowSVGScript {
svg = util.RemoveScriptsInSVG(svg)
}
```
- **修复说明**:默认情况下,不执行SVG中的脚本,以防止XSS攻击。
### 补丁影响
- 此修复确保了在处理SVG图像时的安全性,避免了潜在的XSS风险,增强了系统的安全性。
暂无评论