漏洞概述 漏洞名称: Cross-Origin RCE via Permissive CORS Policy and JavaScript Snippet Injection(通过宽松CORS策略和JavaScript代码片段注入实现跨域远程代码执行) 漏洞编号: GHSA-88p4-j234-43mv / CVE-2024-36449 严重程度: Critical (9.7/10) 根因: Siyuan的CORS中间件无条件设置以下响应头: 显式启用Chrome的私有网络访问规范,允许外部网站访问本地服务。结合 ,任何网站均可向 的Siyuan API发起跨域请求。 认证中间件虽检查Origin头,但因浏览器在跨域请求中携带会话cookie(针对127.0.0.1),服务器在到达Origin检查前已验证cookie,导致检查被绕过。 攻击链: 1. 用户访问恶意网站,Siyuan桌面端正在运行 2. 恶意JS向 发送CORS预检请求,Siyuan返回宽松CORS头 3. 浏览器携带用户会话cookie发送实际POST请求至 4. Siyuan接受请求并保存恶意JS代码片段 5. 代码片段在Electron渲染进程中以Node.js集成执行,实现任意代码执行 --- 影响范围 具体影响: 远程代码执行: 任意网站可通过Electron的Node.js集成执行用户机器上的任意OS命令,攻击者获得用户权限的完全控制权 数据窃取: 攻击者可在RCE触发前通过API读取所有笔记、配置(含API令牌)和工作区数据 无需额外交互: 受害者只需在Siyuan运行时访问恶意/被入侵网页,无需点击、下载或权限对话框 影响所有桌面用户: Siyuan桌面端默认运行于 , 头显式绕过Chrome的私有网络访问保护 持久化: 注入的JS代码片段保存至磁盘,每次Siyuan加载时执行,重启后仍然有效 --- 修复方案 升级至 v3.6.2 --- PoC代码 恶意网页(可托管于任意域名) 验证步骤(验证代码片段是否注入)