🔴 严重 | CVE-2026-65606 — SiYuan before v3.7.2 contains a cross-site scripti...
🔴 【深度分析】严重安全漏洞:CVE-2026-65606
CVSS 评分: 严重(9.4)🔴 状态: Deferred 发布时间: 2026-07-23
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-65606 |
| CVSS 评分 | 9.4 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-79 |
| 发布时间 | 2026-07-23 |
| 最后更新 | 2026-07-23 |
| 状态 | Deferred |
| 数据来源 | disclosure@vulncheck.com |
⚠️ CVSS 评分:9.4(严重)
CVSS 向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
危害等级:严重
漏洞概述
CVE-2026-65606 是存在于笔记软件 SiYuan(思源笔记)v3.7.2 之前版本中的一个跨站脚本(XSS)漏洞,攻击者可利用该漏洞实现 任意操作系统命令执行。漏洞根因在于 siyuan:// 协议处理器在处理特定格式的链接时,未对用户可控的 icon 参数进行转义,直接通过 innerHTML 插入页面元素。更关键的是,SiYuan 桌面端渲染器配置了 nodeIntegration: true,使得注入的 JavaScript 能够调用 Node.js 的 require 方法,进而通过 child_process.execSync() 执行系统命令,将 XSS 升级为 远程命令执行(RCE)。
该漏洞影响范围广(所有使用 SiYuan 桌面客户端的用户),攻击复杂度低,无需受害者交互(只需点击恶意链接,属于用户交互但极为常见),危害极大。
受影响组件与版本
| 组件 | 影响版本 | 修复版本 |
|---|---|---|
| SiYuan Desktop(思源笔记桌面端) | < v3.7.2 | v3.7.2 及以上 |
注意:漏洞存在于
app/src/layout/Tab.ts文件中,该文件是桌面端渲染进程的一部分,因此仅影响桌面客户端,Web 版本可能不受影响(但需官方确认)。
漏洞原理分析
1. 漏洞触发流程
SiYuan 提供了 siyuan:// 自定义协议用于深度链接,例如 siyuan://plugins/<name>。当用户点击此类链接时,应用会执行以下操作:
- 检查
<name>是否对应一个已安装的插件。 - 若插件不存在,则打开一个“自定义标签页”(custom tab),并将链接中的
icon参数 插入到标签页的标题栏中。 - 该插入操作使用了
innerHTML(位于app/src/layout/Tab.ts),且 未对icon参数进行 HTML 转义。
攻击者可以构造如下恶意链接:
siyuan://plugins/NonExistentPlugin?icon=<img src=x onerror="alert(document.domain)">
当 SiYuan 接收该链接后,会将 <img onerror=...> 直接渲染到标签标题栏中,从而执行任意 HTML/JavaScript。
2. 权限提升:从 XSS 到 RCE
通常,桌面应用的渲染进程会禁用 Node.js 集成以隔离安全风险。但 SiYuan 桌面端明确启用了 nodeIntegration: true,使得渲染进程中的 JavaScript 可以访问 Node.js 核心模块。
攻击者可利用此特性,通过 require('child_process').execSync() 执行任意系统命令(例如 calc.exe、反弹 shell 等)。
典型攻击载荷示例:
<img src=x onerror="require('child_process').execSync('calc.exe')">
该载荷完全符合 XSS 注入场景,并最终导致 任意代码执行。
3. 攻击向量分析(基于 CVSS 向量)
- AV:N:攻击者可通过网络向受害者发送恶意链接(例如在网页中嵌入、通过聊天工具发送等),无需物理接触。
- AC:L:无需特殊网络条件,普通用户点击链接即可触发。
- PR:N:攻击前无需任何权限。
- UI:P:需要受害者主动点击恶意
siyuan://链接(或通过自动跳转触发)。这是常见的交互成本,但在社工或诱骗场景下极易实现。 - 影响:机密性、完整性、可用性均为 高,且波及后续连锁攻击。
影响评估
| 评估维度 | 风险等级 | 说明 |
|---|---|---|
| 攻击复杂度 | 低 | 只需构造一个恶意链接,无需额外漏洞配合。 |
| 所需权限 | 无 | 无需认证或登录。 |
| 用户交互 | 中低 | 需要用户点击链接,但链接可通过社工、邮件、即时消息等多种方式投递。 |
| 利用后果 | 严重 | 可执行任意系统命令:窃取文件、安装后门、横向移动等。 |
| 影响范围 | 广泛 | 所有使用 SiYuan Desktop v3.7.2 之前的用户。 |
现实威胁评估:
该漏洞属于 高价值目标型,尤其适合针对思维导图、笔记用户(如开发者、研究人员、企业员工)的攻击。由于能直接获取操作系统控制权,该漏洞可能被用于 APT 攻击或勒索软件初始感染。
修复建议
1. 官方补丁(推荐)
- 升级到 SiYuan v3.7.2 或更高版本。该版本已修复 Tab.ts 中
innerHTML的不安全使用,改为使用textContent或转义处理。 - 从 SiYuan 官方发布页 下载最新版本。
2. 临时缓解措施
若无法立即升级,可采取以下措施:
- 禁用
siyuan://协议处理:在操作系统中解注册siyuan://协议(但会影响正常功能)。 - 限制渲染进程权限:修改 SiYuan 启动配置,设置
nodeIntegration: false(但可能影响插件系统正常功能,需谨慎测试)。 - 教育用户:不点击来源不明的
siyuan://格式链接。 - 网络层过滤:部署浏览器策略,阻止自动打开自定义协议(如 Chrome 的
ExternalProtocolDialogShowAlwaysOpenCheckbox策略)。
3. 长期安全建议
- 开发者应避免在渲染进程中使用
nodeIntegration: true,除非有明确的隔离方案(如contextIsolation: true配合preload脚本)。 - 所有用户输入在插入 DOM 前必须进行转义(优先使用
textContent或createTextNode),禁止直接使用innerHTML。
参考资料
| 类型 | 链接 |
|---|---|
| CVE 详情 | https://nvd.nist.gov/vuln/detail/CVE-2026-65606 |
| CWE-79 详情 | https://cwe.mitre.org/data/definitions/79.html |
| SiYuan 官方发布 | https://github.com/siyuan-note/siyuan/releases |
| CVSS v4.0 计算器 | https://www.first.org/cvss/calculator/4.0 |
| 漏洞披露来源 | disclosure@vulncheck.com |
备注:截至分析时,NVD 中漏洞状态为 “Deferred”,尚未发布正式补丁细节,但官方已确认修复版本为 v3.7.2(详见参考链接中的发布日志)。文中技术细节基于 NVD 描述合理推断,未包含未公开信息。