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

SiYuan <=3.6.0 存储型XSS导致远程代码执行漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33066
漏洞类型
存储型XSS, 远程代码执行
CVSS评分
9.0 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
SiYuan

相关标签

XSSRCESiYuanElectron代码执行

漏洞概述

SiYuan是一款个人知识管理系统。在3.6.0及以下版本中,其后端渲染README时未调用清理函数,导致Markdown中的恶意HTML被保留。前端直接渲染未净化的HTML,触发存储型XSS。由于SiYuan的Electron配置启用了Node集成并关闭了上下文隔离,该漏洞可升级为RCE,允许攻击者完全控制系统。

技术细节

漏洞源于SiYuan后端在渲染Markdown格式的README时,使用了lute.New()但未开启SetSanitize(true)选项。这使得攻击者可以在Markdown中注入恶意HTML标签(如<script>或事件触发标签)。前端接收后端渲染的HTML内容,直接赋值给innerHTML,导致脚本在客户端执行。由于SiYuan基于Electron,且配置了nodeIntegration: true和contextIsolation: false,网页中的JavaScript拥有Node.js环境的完整权限。因此,注入的恶意脚本可以通过require('child_process')等模块调用系统级命令,从而实现从XSS到远程代码执行(RCE)的权限提升。

攻击链分析

STEP 1
1. 恶意软件包制作
攻击者创建一个软件包,其README.md文件中包含嵌入恶意JavaScript代码的HTML标签(如img标签的onerror事件)。
STEP 2
2. 发布软件包
攻击者将该恶意软件包发布到SiYuan的社区资源或仓库中,等待用户浏览。
STEP 3
3. 触发漏洞
受害者在SiYuan客户端浏览软件包列表,并点击查看该恶意软件包的详情页面。
STEP 4
4. 执行XSS
后端渲染README时未过滤HTML,前端将渲染结果直接插入DOM,导致恶意JavaScript代码在用户浏览器中执行。
STEP 5
5. 权限提升与RCE
由于Electron配置不当(nodeIntegration开启,contextIsolation关闭),恶意脚本利用Node.js API执行系统命令(如弹出计算器或反弹Shell),实现远程代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious README.md content --> <img src=x onerror="require('child_process').exec('calc.exe');">

影响范围

SiYuan <= 3.6.0

防御指南

临时缓解措施
建议用户立即升级到修复版本。若暂时无法升级,应避免查看来源不明的第三方软件包详情,并在网络边界处严格限制访问权限。

参考链接

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