CVE-2026-39846SiYuan是一款个人知识管理系统。在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权限,攻击者可以执行系统命令、读写文件或安装后门,从而实现完整的远程代码执行。