CVE-2026-69085 Overview
CVE-2026-69085 is a SQL injection vulnerability [CWE-89] in SiYuan, an open-source personal knowledge management application. The flaw resides in the /api/filetree/searchDocs endpoint, where the keyword parameter is concatenated directly into SQL statements without escaping or parameter binding. Affected versions include SiYuan before v3.7.3. The endpoint is reachable through a publish RoleReader token, or without authentication when publish mode runs with Publish.Auth.Enable set to false. Because the query executes on a read-write SQLite handle via a driver that permits stacked statements, attackers can both read and modify data across all cleartext notebooks on the instance.
Critical Impact
Unauthenticated attackers can read and modify database content across every non-encrypted notebook on a vulnerable SiYuan instance.
Affected Products
- SiYuan versions prior to v3.7.3
- SiYuan instances with publish mode enabled and Publish.Auth.Enable set to false
- SiYuan instances accessible via a publish RoleReader token
Discovery Timeline
- 2026-08-03 - CVE-2026-69085 published to NVD
- 2026-08-03 - Last updated in NVD database
Technical Details for CVE-2026-69085
Vulnerability Analysis
SiYuan exposes the /api/filetree/searchDocs endpoint to support document search. The handler accepts a caller-supplied keyword parameter and embeds it directly into a SQL statement issued against the underlying SQLite database. No prepared statements, parameter binding, or input sanitization protect the query construction path.
The SQLite handle used by the endpoint is opened in read-write mode, and the driver configuration accepts stacked statements separated by semicolons. This combination elevates the impact from data disclosure to arbitrary read and write access against every cleartext notebook stored by the application. Encrypted notebooks remain protected only because their contents are not readable through the same SQL surface.
Root Cause
The root cause is string concatenation of untrusted input into SQL statements [CWE-89]. The keyword argument passes from the HTTP request into the query builder without any escaping layer, and the query executes on a database connection that has not been restricted to read-only or single-statement execution.
Attack Vector
An attacker sends a crafted HTTP request to /api/filetree/searchDocs containing a malicious keyword value. When publish mode is enabled without authentication, the endpoint accepts the request from any network client. When authentication is enforced, a low-privileged RoleReader publish token is sufficient to reach the sink. The attacker embeds additional SQL clauses or stacked statements to enumerate tables, extract note contents, or modify records. Because the network attack vector requires no user interaction, exploitation can be fully automated. See the GitHub Security Advisory and the VulnCheck SQL Injection Advisory for further technical detail.
Detection Methods for CVE-2026-69085
Indicators of Compromise
- HTTP requests to /api/filetree/searchDocs containing SQL metacharacters such as single quotes, UNION, SELECT, or semicolons in the keyword parameter.
- Unexpected modifications to SiYuan SQLite database files or unexplained changes to note contents across notebooks.
- Access to /api/filetree/searchDocs from unauthenticated clients when publish mode is enabled.
- Requests bearing a RoleReader publish token followed by anomalous write activity in application logs.
Detection Strategies
- Inspect web server and reverse proxy logs for keyword values containing SQL syntax elements or stacked statement separators.
- Monitor SiYuan process activity for writes to SQLite database files that do not correlate with authenticated user sessions.
- Deploy web application firewall rules that flag SQL injection patterns targeting the /api/filetree/searchDocs path.
Monitoring Recommendations
- Alert on high-volume requests to /api/filetree/searchDocs from a single source, which may indicate automated exploitation.
- Baseline the size and modification timestamps of SiYuan notebook databases to detect unauthorized changes.
- Forward SiYuan application logs to a centralized log platform and retain them for post-incident review.
How to Mitigate CVE-2026-69085
Immediate Actions Required
- Upgrade SiYuan to version v3.7.3 or later on all instances.
- Audit each instance for publish mode configuration and verify Publish.Auth.Enable is set to true until patching is complete.
- Rotate or revoke any publish RoleReader tokens that were issued while the vulnerable version was in service.
- Restrict network exposure of SiYuan endpoints to trusted origins where feasible.
Patch Information
The SiYuan maintainers addressed the vulnerability in version v3.7.3. The fix introduces parameter binding for the keyword argument and constrains the SQL execution path for the search endpoint. Refer to the GitHub Security Advisory GHSA-33jq-p8c2-q3q4 for release details.
Workarounds
- Disable publish mode until the upgrade to v3.7.3 is deployed.
- Set Publish.Auth.Enable to true to require authentication for the publish surface.
- Place SiYuan behind a reverse proxy or web application firewall that blocks SQL injection patterns on /api/filetree/searchDocs.
- Encrypt sensitive notebooks so their contents are not accessible through the SQL surface.
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

