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

CVE-2026-39846 SiYuan存储XSS致RCE漏洞

披露日期: 2026-04-07

漏洞信息

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

相关标签

RCEXSSSiYuanElectron存储型跨站脚本远程代码执行

漏洞概述

SiYuan是一款个人知识管理系统。在3.6.4版本之前,存在一个严重的远程代码执行漏洞。该漏洞源于应用程序对表格标题内容的存储和渲染处理不当。攻击者可以创建包含恶意代码的笔记,并通过同步功能发送给目标用户。当受害者在SiYuan Electron桌面客户端中打开该恶意笔记时,由于桌面渲染器启用了Node.js集成且未隔离上下文,攻击者注入的JavaScript代码将获得Node.js API的访问权限,从而在受害者设备上执行任意代码,导致系统被完全控制。

技术细节

该漏洞的根本原因在于SiYuan对表格标题内容的处理缺乏安全的转义机制。具体而言,当创建或编辑笔记时,表格的标题内容被直接存储到数据库中,未经过滤或转义。当该笔记被渲染为HTML以供显示时,存储的内容被直接插入到DOM中,导致存储型跨站脚本漏洞。虽然Web环境下的XSS通常受限,但SiYuan的Electron桌面客户端配置存在严重安全缺陷。其渲染进程启用了`nodeIntegration`选项,并禁用了`contextIsolation`。这意味着渲染进程中的JavaScript代码可以直接访问Node.js的内置模块(如`child_process`、`fs`等)。攻击链如下:攻击者首先构造一个包含恶意JavaScript代码的表格标题,并将其导入到同步的工作空间中。一旦受害者执行同步操作并打开该笔记,恶意脚本就会在受害者本地的Electron环境中执行。由于拥有Node.js权限,攻击者可以执行系统命令、读写文件或安装后门,从而实现完整的远程代码执行。

攻击链分析

STEP 1
构造恶意笔记
攻击者创建一个笔记,在表格的标题字段中注入恶意JavaScript Payload,该Payload利用了未转义的存储型XSS漏洞。
STEP 2
同步传播
攻击者将包含恶意Payload的笔记推送到共享的工作空间或云端仓库,等待受害者进行同步。
STEP 3
受害者同步
受害者使用SiYuan客户端执行同步操作,将恶意笔记下载到本地设备。
STEP 4
触发漏洞
受害者在SiYuan Electron桌面客户端中点击并打开该恶意笔记,客户端渲染HTML页面,执行表格标题中的恶意脚本。
STEP 5
远程代码执行
由于Electron配置了`nodeIntegration: true`且`contextIsolation: false`,恶意脚本成功调用Node.js API,在受害者系统上执行任意命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2026-39846: Stored XSS in Table Caption leading to RCE --> <!-- Insert this payload into a SiYuan note table caption field --> <table> <caption><img src=x onerror="require('child_process').exec('open -a Calculator')"></caption> <tr><th>Col1</th></tr> <tr><td>Data</td></tr> </table>

影响范围

SiYuan < 3.6.4

防御指南

临时缓解措施
建议用户立即将SiYuan更新至3.6.4或更高版本以修复此漏洞。如果无法立即更新,应暂停使用同步功能,并避免打开来源不明的笔记,特别是包含复杂表格内容的笔记,以防止恶意代码在本地Electron环境中执行。

参考链接

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