# 思源笔记存储型XSS漏洞
## 概述
SiYuan 是一款自托管的开源个人知识管理软件。在版本 3.5.4-dev2 之前存在一个存储型跨站脚本(Stored XSS)漏洞。
## 影响版本
3.5.4-dev2 之前的 SiYuan 版本
## 细节
该漏洞源于应用未对上传的 SVG 文件进行内容过滤和转义。攻击者可构造包含恶意 JavaScript 代码的 SVG 文件,当用户上传并查看该文件时,恶意代码将在用户的浏览器中执行。
## 影响
攻击者可利用此漏洞在用户登录会话中执行任意 JavaScript 代码,可能导致敏感数据泄露、会话劫持或账户操控等后果。
是否为 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
标题: Stored Cross-Site Scripting (XSS) via Unrestricted SVG File Upload · Advisory · siyuan-note/siyuan · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 漏洞关键信息
#### 漏洞类型
- **Stored Cross-Site Scripting (XSS) via Unrestricted SVG File Upload**
#### 严重性
- **高危**
#### 漏洞描述
- **Summary**:
- SiYuan Note 存在存储型跨站脚本 (XSS) 漏洞,应用未对上传的 SVG 文件进行清洗处理。
- 用户上传并查看一个恶意 SVG 文件(例如,从不受信任的来源导入),任意 JavaScript 代码会在他们认证的会话上下文中执行。
- **Details**:
- 应用允许认证用户上传文件,包括 .svg 图像,且未清洗输入以移除嵌入的 JavaScript 代码(如 <script> 标签或事件处理程序)。
#### PoC
- 步骤说明:创建一个新“每日备注” → 创建包含恶意JavaScript的`test.svg`文件 → 在当前每日备注中上传文件 → 打开文件 → JavaScript代码立即执行。
#### 影响
- 允许上传包含恶意脚本的SVG文件。当用户导出此文件时,嵌入的任意 JavaScript 代码在其浏览器上下文中执行。
#### 解决方案
- 链接到 Pull Request:16844
#### CVE与CVSS信息
- **CVE ID:** CVE-2026-23645
- **Weaknesses:** CWE-79
#### 受影响版本与修补版本
- **受影响版本:** v3.5.3
- **修补版本:** v3.5.4
标题: :lock: Do not execute scripts in assets SVG by default to prevent XSS… · siyuan-note/siyuan@11115da · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键漏洞信息
#### 1. **SVG 脚本执行漏洞**
- **描述**: 不要在默认情况下执行 SVG 资源中的脚本,以防止 XSS 攻击。
- **相关文件**:
- `app/appearance/langs/*.json` (多个语言文件)
- `app/config/editor.ts`
- `app/src/mobile/settings/editor.ts`
- `app/types/config.d.ts`
- `kernel/config.conf`
- `kernel/editor.go`
- **修改**: 添加了 `allowSVGScript` 配置项,用于控制是否允许在 SVG 中执行脚本,并在多个语言文件中添加了关于该配置项的提示,提醒用户注意 XSS 风险。
#### 2. **XSS 攻击风险**
- **描述**: 如果启用了在 SVG 中执行脚本的功能,SVG 内的代码将不会经过安全过滤,可能存在 XSS 攻击的风险。
- **相关文件**:
- `kernel/misc.go`: 添加了 `RemoveScriptsInSVG` 函数,用于移除 SVG 中的脚本标签及其内容。
- `kernel/util.go`: 添加了 `extractSVG` 函数,用于提取并移除 SVG 中的脚本标签。
#### 3. **国际化支持**
- **描述**: 在多个语言文件中添加了关于 `allowSVGScript` 配置项的描述,以支持多语言警告信息。
- **相关文件**:
- `app/appearance/langs/*.json`
### 总结
该提交主要针对 SVG 脚本执行可能导致的 XSS 攻击进行了安全加固,通过添加配置项和相关提示,让用户能够更安全地控制 SVG 脚本的执行,并对多个语言文件进行了更新以提供多语言支持。同时,通过代码修改,进一步确保了在默认情况下不执行不安全的 SVG 脚本。
暂无评论