CVE-2026-69084
SiYuan before v3.7.3 SQL Injection via searchEmbedBlock
Record summary
CVE-2026-69084 has a selected CVSS score of 9.9 (critical); EIP currently links 1 repository PoC.
Description
SiYuan versions <= v3.7.2 expose the /api/search/searchEmbedBlock endpoint, which passes a client-supplied SQL statement verbatim to the main read-write siyuan.db handle with no single-statement, read-only, or admin restrictions. The endpoint is gated only by CheckAuth, making it reachable by the publish RoleReader token and by anonymous users when publish authentication is disabled. Because the underlying driver executes stacked statements, an attacker can read and modify content across all opened cleartext notebooks (encrypted per-box notebooks are excluded). Fixed in v3.7.3.
Exploitation context
Available material
- Repository PoCs
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Aug 3, 2026 · Source: CVE List
Affected products and versions
1| Product | Source | Version range | Status |
|---|---|---|---|
Default status: unaffected | CVE List | Before 3.7.3 | affected |
| 3.7.3 | unaffected |
Proofs of concept
1Repository PoCs
GitHubBoreas37/CVE-2026-69084-PoCRepository PoCby Boreas37Stars: 1Exploit3 files
Analysis
Technical assessment
Python script that exploits CVE-2026-69084 by sending arbitrary SQL statements to the /api/search/searchEmbedBlock endpoint of SiYuan. It includes a --proof mode that creates a table and inserts a row to demonstrate write access, and a --check mode for non-destructive probing.
Backdoor review
No backdoor observed in reviewed code
The PoC script and README demonstrate the documented CVE-2026-69084 SQL injection exploit against SiYuan. The Python code performs only the described actions: session login, sending attacker-supplied SQL to the vulnerable endpoint, and displaying results. No hidden, deceptive, or unrelated behavior is present.
Classification basis and observed behavior
Classification basis
The script is designed to exercise the vulnerability by sending arbitrary SQL statements to the vulnerable endpoint, including destructive write operations (CREATE TABLE, INSERT) in --proof mode. This constitutes exploit code.
CVE-2026-69084.py:85-109CVE-2026-69084.py:118-127Requirements
- Target SiYuan instance <= v3.7.2 with the /api/search/searchEmbedBlock endpoint reachable.
CVE-2026-69084.py:6 - If publish authentication is enabled, a valid auth code is required; otherwise, the endpoint is accessible anonymously.
CVE-2026-69084.py:14-16
Observed behavior
- Performs a session login via /api/system/loginAuth if an auth code is provided.
CVE-2026-69084.py:74-82 - Sends a POST request to /api/search/searchEmbedBlock with a client-supplied SQL statement in the 'stmt' parameter.
CVE-2026-69084.py:85-95 - In --proof mode, executes CREATE TABLE and INSERT statements to write to the database.
CVE-2026-69084.py:118-127 - In --check mode, executes a non-destructive SELECT sqlite_version() query.
CVE-2026-69084.py:112-115
Behaviors behind the backdoor verdict
Observables
- Url
- http://127.0.0.1:6806Target host used in usage examples and verification output; standard for local testing.
CVE-2026-69084.py:31README.md:52 - Sql Statement
- CREATE TABLE IF NOT EXISTS pwn_69084 (id INTEGER)Proof-of-concept SQL payload that creates a table to demonstrate write capability; matches the documented exploit.
CVE-2026-69084.py:121 - Sql Statement
- INSERT INTO pwn_69084 VALUES (31337)Proof-of-concept SQL payload that inserts a row to demonstrate write capability; matches the documented exploit.
CVE-2026-69084.py:122
What the analysis did not establish
- One file (LICENSE) was omitted from the evidence; it is unlikely to affect classification.
- The evidence does not include the execution output or verification that the script successfully exploited a live target.
- One file (LICENSE, 1036 bytes) was classified as binary and not analyzed for text content; it is a standard license file and unlikely to contain executable behavior.
- The review is limited to the supplied text evidence; no dynamic analysis was performed.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.