CVE-2026-69084 - SiYuan: Unauthenticated arbitrary SQL execution via searchEmbedBlock (publish mo
CVE-2026-69084 是思源笔记(SiYuan)存在严重任意SQL执行漏洞。当发布服务开启匿名访问或攻击者获取RoleReader令牌时,可向 /api/search/searchEmbedBlock 接口提交任意SQL,读写明文笔记数据。受影响版本 ≤ v3.7.2,建议立即升级到 v3.7.3。CVSS 10.0,属于Critical级别。
CVE-2026-69084 - SiYuan: Unauthenticated arbitrary SQL execution via searchEmbedBlock (publish mo
📋 漏洞概述
思源笔记 searchEmbedBlock 接口存在未授权任意SQL执行漏洞,攻击者可读写所有明文笔记本内容,造成数据泄露与篡改。
📋 基础信息
| 受影响版本 | SiYuan <= v3.7.2 |
| 漏洞类型 | 未授权任意SQL执行/访问控制缺失 |
| CVSS | 10.0 · Critical |
| CVE | CVE-2026-69084 |
🔬 漏洞根因
searchEmbedBlock 接口将客户端提供的 SQL 语句原样传递给数据库执行,未进行任何验证或过滤。该接口仅由 CheckAuth 门控,未执行单语句检查、只读检查或管理员角色限制,导致低权限 RoleReader 令牌甚至匿名用户(Publish.Auth.Enable=false 时)可直接操作可读写的 siyuan.db 主库,且底层驱动支持多语句堆叠执行,造成任意SQL执行。
🎯 攻击场景
1. 攻击者访问开启了发布功能的思源服务,获取匿名访问能力(未启用认证)或窃取/截获一个低权限的 RoleReader 令牌。 2. 构造 POST 请求到 /api/search/searchEmbedBlock,请求体为 JSON:{"stmt":"<恶意SQL>"}。 3. 恶意SQL可包含多条堆叠语句,如先读取所有明文笔记本数据,再修改或删除关键笔记内容。 4. 请求通过仅有的 CheckAuth 校验后,成功在 siyuan.db 主库上执行任意SQL,无需任何管理员权限。 5. 攻击者获得明文笔记内容或破坏数据库完整性,实现信息窃取与内容篡改。
💥 漏洞影响
攻击者可完全读取和修改所有已打开的明文笔记本中的文本、属性与文档结构,造成严重数据泄露与完整性破坏;同时可利用主库读写能力篡改数据库元数据,可能进一步影响服务可用性。加密的 per-box 笔记数据库不在影响范围内。
🛡️ 修复建议
立即升级到 SiYuan v3.7.3 或更高版本,该版本已为相关接口增加单语句限制、只读检查和管理员权限校验。临时缓解措施:在升级前关闭发布服务或启用 Publish.Auth.Enable=true,限制 RoleReader 令牌的分发和使用,通过防火墙/WAF限制 /api/search/searchEmbedBlock 的外部访问,并监控相关异常流量。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-69084
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-69084
- 原始来源(GitHub-Advisory)
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-09-04 05:07 | 来源: GitHub-Advisory
🤖 常见问题解答(FAQ)
❓ 如何确认自己的思源版本是否受影响?
检查版本号是否 ≤ v3.7.2。可尝试用匿名或低权限令牌向 /api/search/searchEmbedBlock 发送 {"stmt":"SELECT 1"},若返回正常结果则说明存在漏洞。
❓ 攻击者利用该漏洞需要哪些条件?
要求思源发布服务开放该接口,且处于匿名可访问状态(Publish.Auth.Enable=false),或者攻击者已获得具备 RoleReader 权限的发布令牌。无需管理员权限。
❓ v3.7.3 修复该漏洞的具体方式是什么?
官方为该接口补上了与 /api/query/sql 一致的防护,包括执行前检测单语句、只读模式下拒绝非只读SQL,并加强访问控制,禁止低权限角色调用该接口。