🔴 严重 | CVE-2026-66012 — SiYuan before v3.7.2 contains a missing authorizat...
🔴 【深度分析】严重安全漏洞:CVE-2026-66012
CVSS 评分: 严重(10.0)🔴 状态: Deferred 发布时间: 2026-07-25
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-66012 |
| CVSS 评分 | 10.0 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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-862 |
| 发布时间 | 2026-07-25 |
| 最后更新 | 2026-07-28 |
| 状态 | Deferred |
| 数据来源 | disclosure@vulncheck.com |
CVSS 评分:10.0(严重)
CVSS 向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
CWE: CWE-862(Missing Authorization)
受影响版本: SiYuan < v3.7.2
漏洞概述
CVE-2026-66012 是开源笔记软件 SiYuan(思源笔记)中存在的一处缺失授权漏洞。漏洞位于内核的 POST /mcp 端点,该端点仅通过通用身份检查(model.CheckAuth)进行门槛校验,未强制要求管理员角色或只读模式。在特定配置下,远程、未认证的攻击者可利用该漏洞调用 31 个 MCP(Model Context Protocol)工具,实现任意文件读取/写入、插件植入乃至管理员级接管。
CVSS 4.0 评分为满分 10.0,攻击向量为网络(AV:N)、攻击复杂度低(AC:L)、无需权限(PR:N)、无需用户交互(UI:N),且对机密性、完整性、可用性均造成完全影响,同时波及系统(SC/SI/SA),属于可远程直接利用的极高危漏洞。
受影响组件与版本
| 组件 | 影响范围 |
|---|---|
| SiYuan(思源笔记) | 所有 v3.7.2 之前的版本 |
根据 NVD 数据,该漏洞在 v3.7.2 中被修复。建议使用 3.7.2 以下版本的用户立即评估并升级。
漏洞原理分析
1. 缺失授权:`/mcp` 端点只校验“是否登录”
SiYuan 内核提供了 MCP 服务端点 POST /mcp,用于暴露一组工具供 AI 模型或外部程序调用。从漏洞描述看,该端点的访问仅通过 model.CheckAuth 进行通用身份检查——即只要请求携带有效 JWT(无论其角色如何),即可访问全部 MCP 工具。
关键问题在于:
- 未验证用户是否为管理员(admin-role);
- 未对敏感操作施加“只读”或“可写”的角色区分;
- 暴露的 31 个 MCP 工具中,包含一个文件操作工具,支持
list/read/write/delete/rename/copy等操作,且作用于整个工作区。
这意味着,任一低权限或匿名角色持有者,只要能通过认证检查,即可调用等同于管理员权限的文件操作接口。
2. 匿名发布模式:将“登录”也一并绕过
更严重的是,SiYuan 的发布(Publish)服务器在配置为匿名模式时,会主动“赋予”请求一个匿名身份:
Conf.Publish.Enable = true
Conf.Publish.Auth.Enable = false
此时,发布反向代理会将一个包含 RoleReader 角色的匿名 JWT 附加到所有代理请求上。由于 /mcp 端点只验证 JWT 的有效性,而不校验角色,这个匿名 JWT 恰好能通过 model.CheckAuth。
攻击链路如下:
- 攻击者向发布服务器发送请求,路径被反向代理转发至内核
/mcp; - 代理自动附加匿名
RoleReaderJWT; - 内核校验 JWT 通过,未检查角色;
- 攻击者获得 MCP 工具调用权限。
因此,在“发布服务开启 + 匿名访问”的配置下,远程未认证攻击者可以完全绕过认证,直接访问 MCP 端点。
3. 从任意文件读写到管理员接管
利用 MCP 文件工具,攻击者可执行以下攻击链:
- 读取敏感配置:读取
conf/conf.json,获得明文存储的accessAuthCode、api.token、cookieKey等核心密钥; - 写入任意文件:在工作区任意位置写入恶意文件;
- 植入插件:将恶意插件写入
data/plugins/目录; - 在桌面端获得代码执行:SiYuan 桌面端以
nodeIntegration:true且关闭contextIsolation的方式加载插件,恶意插件在下次桌面端启动时自动执行,从而获取管理员级系统权限。
该攻击链从远程无认证开始,最终可导致运行 SiYuan 的宿主机被完全控制。
影响评估
攻击条件与复杂度
| 因素 | 评估 |
|---|---|
| 攻击向量(AV) | 网络(N),远程可利用 |
| 攻击复杂度(AC) | 低(L),无需特殊条件 |
| 所需权限(PR) | 无(N),默认匿名模式即为未认证 |
| 用户交互(UI) | 无(N) |
| 机密性影响 | 高(H),可读取任意文件、明文密钥 |
| 完整性影响 | 高(H),可写任意文件、植入插件 |
| 可用性影响 | 高(H),可删除/重命名/覆盖关键文件 |
实际可利用性
- 前置条件:需要存在公开可达的发布服务,且配置为匿名模式(
Publish.Enable=true、Publish.Auth.Enable=false)。该配置对许多用户而言是常见用法(例如将笔记发布为公开网站),因此暴露面较大。 - 利用难度:极低。无需账号,无需用户交互,发送构造的 MCP JSON-RPC 请求即可。
- 影响后果:如果攻击者仅止步于读取
conf.json,即可获取 API token 和 Cookie 密钥,进而冒充管理员会话;若进一步写入插件,可在桌面端获得任意代码执行,实现管理员级别的系统接管。
风险评级
CVSS 10.0(严重) 完全合理。该漏洞同时具备远程、无认证、低复杂度、高影响的特点,属于可自动化批量利用的漏洞。
注意:NVD 当前漏洞状态为 Deferred,意味着官方尚未完全确认或修复流程仍在推进中。但根据描述,修复版本 v3.7.2 已发布。由于涉及未授权远程代码执行,建议用户立即升级,不要等待延迟处理。
修复建议
1. 升级版本
- 立即升级至 SiYuan v3.7.2 或更高版本。
- 在升级前,请确认新版本对
/mcp端点实施了完整的授权校验(包括角色验证、只读模式限制等)。
2. 临时缓解措施
如果暂时无法升级,请采取以下措施:
禁止匿名发布:
- 将
Conf.Publish.Auth.Enable设置为true,要求所有发布访问者进行身份认证; - 或直接将
Conf.Publish.Enable设为false,完全关闭发布服务。
- 将
限制网络访问:
- 不要将发布服务直接暴露到公网,或仅限可信 IP/内网访问;
- 使用反向代理/VPN 进行访问控制。
隔离运行环境:
- 如果必须保留发布服务,建议将 SiYuan 运行在低权限容器或虚拟机中,避免插件执行导致宿主机沦陷;
- 设置系统防火墙,禁止非必要端口对外开放。
3. 安全加固
- 检查已部署环境中是否存在被利用痕迹(如
data/plugins/下出现未知插件、conf/conf.json被访问的日志)。 - 若曾经暴露于公网,建议重置
accessAuthCode、api.token、cookieKey,并清理工作区中的异常文件。 - 关注 SiYuan 官方安全公告,跟进后续补丁与推荐配置。
参考资料
- NVD 漏洞详情:https://nvd.nist.gov/vuln/detail/CVE-2026-66012
- CWE-862(Missing Authorization):https://cwe.mitre.org/data/definitions/862.html
- 披露来源:disclosure@vulncheck.com
- 发布时间:2026-07-25
总结
CVE-2026-66012 是典型的“认证正确但授权缺失”漏洞,叠加匿名发布模式对 JWT 的自动附加,形成了从“未认证”到“任意文件读写”再到“宿主系统接管”的完整攻击链。其 CVSS 10.0 的评分反映了极低的利用门槛和毁灭性的影响。所有 SiYuan 用户应将该漏洞视为最高优先级处理:立即升级到 v3.7.2,并检查是否曾暴露于危险配置之下。若无法升级,务必关闭匿名发布或将服务置于严格受控网络中。