🔴 【深度分析】严重安全漏洞:CVE-2026-65605

CVSS 评分: 严重(9.4)🔴  状态: Deferred  发布时间: 2026-07-23


🔍 技术细节速览

字段
CVE ID CVE-2026-65605
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 4.0 评分:9.4(严重)
向量: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
危害等级:Critical(严重)
状态:NVD 标记为 Deferred(待评估),但 PoC 细节已公开


漏洞概述

CVE-2026-65605 是开源笔记应用 SiYuan(思源笔记) 中属性视图(Attribute View)数据库单元格渲染模块的一个 存储型跨站脚本(Stored XSS)漏洞。攻击者无需认证即可在 Template 类型的列中注入恶意 HTML/JavaScript 负载,当其他用户(或受害者)打开包含该数据行的数据库视图时,负载会被无过滤执行。更严重的是,由于 桌面端渲染器默认启用了 nodeIntegration,该 XSS 可进一步升级为 任意命令执行(RCE),直接影响主机安全。

受影响的版本为 SiYuan 低于 v3.7.2。CVSS 4.0 评分高达 9.4,接近理论最高分,因为攻击复杂度低、网络可达、影响机密性/完整性/可用性(主机级+容器级)。


受影响组件与版本

组件 受影响版本范围 安全修复版本
SiYuan(思源笔记)桌面端 & 服务端 < v3.7.2 v3.7.2 及以上

说明:漏洞存在于核心的模板渲染逻辑中,无论部署模式(桌面本地、服务器 Web 端)均受影响。桌面端因 nodeIntegration 开启导致影响更严重。


漏洞原理分析

1. 触发位置:属性视图的 Template 列

SiYuan 的属性视图(类似数据库表格)支持用户自定义列类型,其中包括 Template(模板) 列。该列允许用户使用 text/template 语法定义动态单元格内容(例如引用其他字段的值)。渲染时,内容被直接插入 DOM 的 innerHTML 属性中。

2. 不完整的 HTML 转义逻辑

开发者在渲染时尝试调用 EscapeHTML() 进行转义,但 条件判断存在缺陷:仅在 HasUnclosedHtmlTag() 返回 true 时才执行转义。而像 <img src=x onerror=...> 这类 自闭合标签(self-closing tag),其标签结构在 HTML 解析中是平衡的(<img ... /><img ... >),因此 HasUnclosedHtmlTag() 会返回 false,导致整个负载未经转义被存储并执行。

3. 攻击流程

  1. 注入阶段:攻击者通过添加/修改数据库记录,在 Template 列的值中写入类似 <img src=x onerror="alert(1)"> 的 payload。
  2. 存储阶段:payload 被持久化到用户数据库(.sy 文件或服务器存储)。
  3. 触发阶段:当受害者(包括其他协作者)打开该数据库视图时,客户端渲染函数调用 innerHTML 插入该值,浏览器解析 <img> 标签时触发 onerror 事件,执行任意 JavaScript。

4. 从 XSS 到 RCE(桌面端特有)

SiYuan 桌面版基于 Electron 框架,渲染进程(renderer)默认开启 nodeIntegration: true。这意味着在渲染进程执行的 JavaScript 能够直接调用 Node.js 原生 API,如 require('child_process')。因此,攻击者可以注入如下 payload:

<img src=x onerror="require('child_process').execSync('calc.exe')">

无需额外绕过,即可在受害者主机上执行任意系统命令。


影响评估

评估维度 分析
攻击向量(AV:N) 攻击者通过网络即可注入 payload,无需物理访问或邻近。
攻击复杂度(AC:L) 仅需普通用户权限(如已注册用户或可编辑数据库的访客),无需特殊技巧。
所需权限(PR:N) 对于公开共享的数据库,未授权用户也可直接注入(若系统配置允许)。即使需登录,一般用户权限即可。
用户交互(UI:P) 受害者只需打开被污染的数据库视图,无需额外点击。
机密性/完整性/可用性影响 主机级(VC/VI/VA:H):可从网络中窃取文件、修改本地数据、执行恶意进程。容器级(SC/SI/SI:H):因 Electron 隔离不足,攻击者还可能影响其他渲染进程或主进程。
利用条件 需要目标数据库中存在 Template 列且可被攻击者编辑(常见于团队协作场景)。

实际威胁评级:极高。该漏洞可被用于钓鱼、数据窃取、勒索软件部署等攻击链。


修复建议

官方补丁

升级 SiYuan 至 v3.7.2 或更高版本。该版本修正了 Template 列的渲染逻辑,对所有内容强制执行 HTML 转义。

临时缓解措施(无法立即升级时)

  1. 禁用 nodeIntegration:修改 SiYuan 桌面版启动参数或配置文件,设置 webPreferences.nodeIntegration = false,可阻止 XSS 升级为 RCE(但 XSS 本身仍可能造成数据窃取)。
  2. 限制数据库编辑权限:对于团队协作实例,严格控制谁可以编辑属性视图中的 Template 列。
  3. 部署内容安全策略(CSP):若自建服务端,可在响应头中添加 Content-Security-Policy: default-src 'self'; script-src 'self' 等策略,阻止内联脚本执行。但请注意,innerHTML 插入的 <img onerror> 仍可能被触发,需配合 script-src 'self' 限制动态脚本。
  4. 使用 Web 端替代桌面端:临时使用浏览器访问 SiYuan Web 界面,并在浏览器中启用 XSS 过滤器(如 Chrome 的 XSS Auditor,但已废弃)。

检测方法

检查数据库中属性视图的 Template 列是否存在类似 <img src=<script><svg onload= 等异常 HTML 标签。


参考资料

类型 链接
NVD 官方页面 https://nvd.nist.gov/vuln/detail/CVE-2026-65605
CWE-79(跨站脚本) https://cwe.mitre.org/data/definitions/79.html
SiYuan GitHub Release https://github.com/siyuan-note/siyuan/releases/tag/v3.7.2
Electron 安全文档 – nodeIntegration https://www.electronjs.org/docs/latest/tutorial/security#2-do-not-enable-nodejs-integration-for-remote-content

免责声明:本文基于 NVD 公开数据及漏洞描述撰写,部分技术细节推断自 CVSS 向量与已知攻击模式。具体利用方式请以官方或第三方 PoC 为准。请及时修复,避免造成损失。