IPBUF安全漏洞报告
English
CVE-2026-45375 CVSS 9.0 严重

SiYuan 存储型XSS漏洞 (CVE-2026-45375)

披露日期: 2026-05-14

漏洞信息

漏洞编号
CVE-2026-45375
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
9.0 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
SiYuan

相关标签

XSSSiYuanStored XSSHTML InjectionCVE-2026-45375

漏洞概述

SiYuan是一款开源的个人知识管理系统。在3.7.0版本之前,其社区市场功能存在严重的存储型XSS漏洞。该漏洞源于后端在处理插件、主题等包的配置文件时,仅对作者、显示名称和描述字段进行了HTML转义,而忽略了“名称”和“版本”字段。前端在渲染这些未经过滤的数据时使用了innerHTML,导致攻击者可以通过上传恶意构造的包,在用户浏览市场页面时执行任意恶意HTML/JavaScript代码,从而窃取用户凭证或执行其他恶意操作。

技术细节

该漏洞的根源在于SiYuan内核与前端渲染之间的数据清洗不一致。在`kernel/bazaar/package.go`文件中,`sanitizePackageDisplayStrings`函数负责清理输入,但仅覆盖了Author、DisplayName和Description字段。Package的Name和Version字段被原样传递。在前端`app/src/config/bazaar.ts`中,代码直接通过模板字符串(如`${item.preferredName}`)将这些未转义的字符串嵌入HTML,并赋值给DOM元素的`innerHTML`属性。利用路径:攻击者注册一个恶意插件,将其`plugin.json`中的`name`字段设置为包含JavaScript Payload的字符串。当其他用户打开SiYuan的“设置 -> 市场”页面时,前端会从服务器获取插件列表并渲染。由于使用了`innerHTML`,恶意脚本被解析并立即在受害者的浏览器上下文中执行。

攻击链分析

STEP 1
1
攻击者制作恶意插件包,修改其plugin.json文件,在name或version字段中植入XSS Payload。
STEP 2
2
攻击者将该恶意包上传至SiYuan Bazaar(社区市场)。
STEP 3
3
受害者登录SiYuan并打开“设置 -> 市场”页面。
STEP 4
4
前端从服务器获取包列表,并使用innerHTML将未转义的name和version渲染到页面中。
STEP 5
5
受害者浏览器解析恶意HTML/JS代码,Payload执行,攻击者获得受害者上下文控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
{ "name": "<img src=x onerror=alert('XSS')>", "version": "1.0<script>alert(1)</script>", "displayName": "Malicious Plugin", "description": "This plugin exploits the XSS in SiYuan Bazaar." } // Exploit Explanation: // 1. Create a plugin/theme with the above JSON content. // 2. Upload it to the SiYuan Bazaar. // 3. When a victim views the Marketplace, the 'name' and 'version' fields // are injected into the DOM via innerHTML, triggering the script execution.

影响范围

SiYuan < 3.7.0

防御指南

临时缓解措施
建议用户立即升级至3.7.0及以上版本。在未升级前,应谨慎打开SiYuan的社区市场页面,避免加载来源不明的第三方插件或主题,以防止恶意脚本执行。

参考链接

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