CVE-2026-34585SiYuan是一款个人知识管理系统。在3.6.2版本之前,该系统存在一个高危漏洞。攻击者可以利用精心设计的块属性值,通过混合HTML实体和原始特殊字符来绕过服务端的属性转义机制。攻击者首先创建包含恶意IAL值的.sy文档,并将其打包为.sy.zip文件。诱导受害者通过SiYuan的导入功能加载该文件。一旦受害者打开被导入的笔记,恶意代码将打破原始HTML上下文限制并注入事件处理程序,触发存储型跨站脚本攻击(XSS)。在Electron桌面客户端环境下,由于注入的JavaScript拥有Node/Electron API的访问权限,该漏洞可被进一步利用以实现远程代码执行(RCE)。官方已在3.6.2版本中修复此问题。
该漏洞的根源在于SiYuan服务端对块属性(IAL)的过滤逻辑不完善。正常情况下,特殊字符会被转义以防止HTML注入。然而,当攻击者构造包含HTML实体(如& quot;)与原始引号混合的特定Payload时,转义函数无法正确闭合属性引号,导致Payload逃逸出属性值范围。攻击者利用这一点在.sy文件中的块级元素后追加恶意事件处理器(如onload、onerror等)。当受害者在Electron客户端渲染该文档时,恶意JS代码被触发。由于Electron架构中渲染进程与主进程共享Node.js环境,攻击者可以通过require('child_process')等模块调用系统命令,从而在用户设备上执行任意代码,获取系统控制权。这要求用户进行交互(打开文件),但无需预先认证。