Skip to content
eastbaycyber

CVE-2026-69084: Critical SQL Injection in SiYuan API

CVE explainers 10 min read
SR
Security Research Desk Expert reviewed
Threat intelligence · Human-verified · Updated 2026-08-03
▲ Escalation ViewOne CVE, briefed at three altitudes — skim the Brief, weigh the Impact, or work the Runbook. The way a SOC actually reads it.
CISOBrief · 30-second brief

TL;DR - SiYuan <= 3.7.2 contains a critical SQL injection in /api/search/searchEmbedBlock. - Exposed publish instances, especially with weak or disabled auth, are the main concern. - Upgrade to 3.7.3 immediately and restrict external access until patched.

Vulnerability at a Glance

Field Value
CVE ID CVE-2026-69084
CVSS 10.0 (per NVD)
Attack vector Network
Privileges required None in some exposed publish configurations; otherwise low/equivalent reader-level access via publish token as described by NVD
Patch available Yes, fixed in SiYuan v3.7.3

CVE-2026-69084 is a critical SQL injection vulnerability in SiYuan, the note-taking and personal knowledge management product associated with B3log / SiYuan Note. According to the NVD description, affected versions up to and including v3.7.2 expose the /api/search/searchEmbedBlock endpoint in a way that accepts a client-supplied SQL statement and passes it directly to the writable siyuan.db SQLite handle.

This is not just a read-only data exposure issue. The NVD states the backend executes stacked statements and applies no single-statement, read-only, or admin-only restrictions. That means an attacker may be able to both query and modify notebook content in all opened cleartext notebooks. The issue is fixed in v3.7.3.

What Is This Vulnerability?

At its core, CVE-2026-69084 is an unsafe SQL execution flaw in an API endpoint intended to support embedded block search behavior. The vulnerable endpoint, /api/search/searchEmbedBlock, reportedly accepts SQL from the client and forwards it verbatim to the main writable SQLite database connection. In secure designs, client input should never be executed as raw SQL without strict validation, parameterization, and role-based restrictions. Here, the problem is that the application appears to expose SQL execution semantics directly through a remotely reachable API path.

The NVD description is especially important because it spells out the missing protections: no single-statement enforcement, no read-only enforcement, and no admin restriction. In practice, those omissions matter because even some dangerous SQL interfaces become less severe when limited to a single SELECT-only statement on a read-only handle. That is not the case here. The database handle is described as the main read-write siyuan.db connection, so write operations are in scope.

A second factor driving severity is that the underlying SQLite driver reportedly executes stacked statements. That means an attacker may be able to append multiple statements in a single request, such as a SELECT followed by an UPDATE, INSERT, or DELETE. The consequence is broader than information disclosure: it may enable direct content tampering, destruction, or unauthorized note manipulation across accessible cleartext notebooks.

Exposure also depends on how SiYuan publishing is configured. Per NVD, the endpoint is gated only by CheckAuth, and that makes it reachable by the publish RoleReader token and by anonymous users when publish authentication is disabled. For defenders, that means the real-world risk is highest on instances exposed to untrusted networks, especially internet-facing publish deployments with weak or absent access controls.

AnalystImpact · assess the risk

Who Is Affected?

The affected product is SiYuan. Based on the NVD record and supporting release references, the vulnerable version range is SiYuan versions up to and including v3.7.2. That means 3.7.2 and earlier should be treated as affected unless the vendor has issued a separate backport statement. In the provided source set, no backported fix information is documented, so defenders should assume all builds at or below 3.7.2 are vulnerable.

The fixed version is v3.7.3. If you are running SiYuan through a desktop package manager, containerized deployment, mirrored release artifact, or Flathub package, verify the actual installed application version rather than assuming the distribution channel has already updated. In practice, delayed packaging can leave systems exposed even after the vendor has published a fix upstream.

The impact applies to opened cleartext notebooks. The research note and NVD description both state that encrypted per-box notebooks are excluded. That limitation matters, but it should not create a false sense of safety. Many SiYuan users and small deployments rely on default or convenience configurations, and any cleartext notebook data exposed through the main writable siyuan.db path should be assumed at risk.

Administrators should pay particular attention to systems where the publish function is enabled, especially if the instance is accessible from the internet, reverse proxied to external users, or configured with publish authentication disabled. Even where publish auth is enabled, the fact that a RoleReader token may reach the endpoint means low-privilege or shared read access could still be enough for exploitation.

CVSS Score Breakdown

NVD assigns CVSS v3.x 10.0, which places this issue in the critical range. Even without reproducing every vector component from the source record, that score is consistent with the described behavior: remote reachability, minimal access requirements in some configurations, low exploitation complexity, and the ability to affect confidentiality and integrity at high impact.

From a practitioner perspective, the most important CVSS dimensions are the ones that translate into operational urgency. The network attack vector means the flaw can be triggered over HTTP(S) against the application endpoint rather than requiring local shell access. The absence of meaningful query restrictions and the existence of stacked statement execution reduce attacker effort. If publish auth is disabled, the practical privilege barrier may be effectively none.

The confidentiality impact is high because notebook content in cleartext notebooks can be read. The integrity impact is also high because the same flaw may allow content modification across opened notebooks. Availability impact is less explicitly documented in the source material, so defenders should avoid overstating it. However, because write access to the primary SQLite database is involved, destructive modifications are a reasonable concern even if the sources do not formally enumerate them.

A useful takeaway is that a 10.0 score here is not just a theoretical maximum. It reflects a vulnerability pattern security teams routinely prioritize: remotely reachable injection into a writable data store with low friction and high-value application data at stake. Even though CISA has not added this CVE to KEV as of the date provided, patching priority should still be high.

Exploitation Status

At the time of this write-up, active exploitation in the wild is not confirmed in the provided primary sources. The research note explicitly states that CISA KEV does not list CVE-2026-69084, and no primary-source confirmation of ongoing exploitation was identified in the checked references. That means defenders should avoid claiming known exploitation unless new evidence emerges.

Likewise, a public proof of concept was not confirmed from the sources provided. That is not the same as saying exploitation is unlikely. In fact, the vulnerability description is detailed enough that many attackers would not need a polished public PoC to weaponize it. The endpoint is identified, the authentication model is described, the SQL execution behavior is explained, and the affected versions are known.

For defenders, the correct wording is: PoC not confirmed from the checked sources; in-the-wild exploitation not confirmed from the checked sources. In the absence of public exploitation data, assume rapid weaponization is plausible because the flaw is straightforward, high impact, and exposed through a network API. Internet-facing SiYuan publish deployments should therefore be treated as urgent patch candidates.

ResponderRunbook · act now

How to Detect It

Detection should focus on requests to /api/search/searchEmbedBlock that carry unusual SQL-like payloads, especially requests originating from untrusted IP space, low-privilege publish users, or anonymous sessions on instances where publish auth is disabled. If you have reverse proxy logs, WAF logs, or application access logs, look for requests containing SQL keywords such as select, union, insert, update, delete, pragma, semicolons used for statement stacking, or SQLite-specific syntax directed at this endpoint.

You should also inspect notebooks for unexpected content changes, missing notes, modified blocks, or unexplained metadata changes after suspicious API activity. Because the issue can affect the writable siyuan.db handle, pure web-layer detection may not be enough. Pair HTTP log review with file integrity monitoring, backup diff checks, and application data comparisons where possible.

Technical Notes

A basic log hunting pattern for web logs is to look for requests targeting the vulnerable path with SQL metacharacters or stacked statements:

/api/search/searchEmbedBlock

Example grep patterns for common proxy or access logs:

grep -Ei '(/api/search/searchEmbedBlock).*(select|union|insert|update|delete|drop|pragma|attach|;|-- )' /var/log/nginx/access.log
grep -Ei '(/api/search/searchEmbedBlock).*(select|union|insert|update|delete|drop|pragma|attach|;|-- )' /var/log/apache2/access.log

Example Splunk query:

index=web (uri_path="/api/search/searchEmbedBlock" OR url="*/api/search/searchEmbedBlock*")
| regex _raw="(?i)(select|union|insert|update|delete|drop|pragma|attach|;|-- )"
| stats count by src_ip, http_method, uri_path, user_agent, status

Example Sigma-style logic to adapt internally:

title: SiYuan searchEmbedBlock suspicious SQL patterns
logsource:
  category: webserver
detection:
  selection:
    cs-uri-stem|contains: "/api/search/searchEmbedBlock"
  keywords:
    cs-uri-query|contains:
      - "select"
      - "union"
      - "insert"
      - "update"
      - "delete"
      - "pragma"
      - "attach"
      - ";"
  condition: selection and keywords
level: high

If application-level logging is sparse, assume detection coverage is incomplete. In that case, review reverse proxy logs, firewall logs, and any change history around siyuan.db or notebook content after exposure windows.

Mitigation and Patching

The primary remediation is to upgrade SiYuan to v3.7.3 or later. The NVD record explicitly states the vulnerability is fixed in v3.7.3. If you are on 3.7.2 or earlier, treat the system as vulnerable. If you cannot immediately verify the version, assume exposure until you confirm the build number on disk or in the application UI.

If immediate patching is not possible, reduce exposure aggressively. Restrict access to SiYuan from trusted IPs only, disable public publishing where feasible, and require publish authentication. Because the NVD notes that the endpoint may be reachable by a RoleReader token and by anonymous users when publish auth is disabled, token handling and external exposure both matter. If exposure is suspected, rotate publish tokens and review note content for unauthorized modification.

You should also consider isolating the service behind a VPN or internal reverse proxy ACL until the patch is in place. For internet-facing instances, temporary takedown is justified if the application stores sensitive notebook content in cleartext notebooks. Since the issue involves a writable SQLite handle, defenders should verify the integrity of data after patching rather than assuming patching alone removes all risk from prior compromise.

Technical Notes

First, verify the installed version:

siyuan --version

If installed via Flatpak, check and update with:

flatpak info org.b3log.siyuan
flatpak update org.b3log.siyuan

If you deploy from release artifacts, upgrade by downloading and installing v3.7.3 from the vendor-supported release channel or trusted mirror, then restart the application or service according to your deployment model. Because packaging differs by platform, there is no single universal install command documented in the provided sources; where your package source lags, use the upstream 3.7.3 release artifact.

As a temporary network workaround, block external access to the vulnerable endpoint at the reverse proxy layer. Example NGINX rule:

location = /api/search/searchEmbedBlock {
    deny all;
    return 403;
}

Or restrict the entire application to trusted source IPs until upgraded:

location / {
    allow 192.0.2.0/24;
    deny all;
    proxy_pass http://127.0.0.1:6806;
}

If you suspect exposure, rotate publish tokens, require authentication, and compare current notebook state to backups. A practical integrity check is to back up siyuan.db, diff exported notes against the last known good backup, and investigate unexpected changes before restoring normal access.

References

The primary reference for the CVE is the NVD record, which documents the vulnerable endpoint, the security impact, the affected versions, and the fixed version. For version validation and remediation tracking, the GitHub Security Advisory and publicly visible release listings are the most useful supporting sources from the provided research set.

CISA KEV is also relevant operationally because it helps teams understand whether a vulnerability has been formally listed as known exploited by CISA. As of the stated check date, CVE-2026-69084 is not listed in KEV. That should not lower patch urgency given the CVSS 10.0 score and the direct path to data modification.

In short, defenders should treat SiYuan <= 3.7.2 as vulnerable, prioritize upgrade to 3.7.3, and investigate any exposed publish deployment for suspicious access to /api/search/searchEmbedBlock. Even without confirmed in-the-wild exploitation, the technical details are sufficient to justify immediate action.

For more information on SQL injection vulnerabilities, refer to our glossary on CSRF and SQL Injection Prevention and check out the latest vulnerabilities at CVE-2026-12778.

This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.

Last verified: 2026-08-03

Disclaimer: This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.