CVE-2026-69084: SiYuan arbitrary SQL execution via searchEmbedBlock

CVE-2026-69084 · Severity: critical · CVSS 10 · Published 2026-09-03

SiYuan is a note-taking and knowledge management application that stores user notebooks in a local SQLite database. The `/api/search/searchEmbedBlock` endpoint accepts raw SQL statements from unauthenticated users in publish mode and executes them directly on the main read-write database without restriction. An attacker can exploit this to read all notebook content across the workspace, modify or delete notes, and manipulate files through SQL's ATTACH mechanism—without needing admin privileges, authentication tokens, or write permissions.

Technologies: github.com/siyuan-note/siyuan/kernel (Go), SiYuan. Vendors: Go, SiYuan.

Quick answers

Is CVE-2026-69084 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-69084 being exploited in the wild.
How severe is CVE-2026-69084?
Critical severity, with a CVSS score of 10, published 3 September 2026.
Which products and versions are affected?
github.com/siyuan-note/siyuan/kernel (Go) < 0.0.0-20260721002947-23a17d44b5f3, SEMVER:introduced=0,fixed=0.0.0-20260721002947-23a17d44b5f3; SiYuan < 0.0.0-20260721002947-23a17d44b5f3.
Is there a fix for CVE-2026-69084?
Yes. github.com/siyuan-note/siyuan/kernel (Go): upgrade to 0.0.0-20260721002947-23a17d44b5f3 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-69084 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-69084?
Check whether you run github.com/siyuan-note/siyuan/kernel (Go) or SiYuan at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • github.com/siyuan-note/siyuan/kernel (Go): upgrade to 0.0.0-20260721002947-23a17d44b5f3 or later
    go get github.com/siyuan-note/siyuan/kernel@v0.0.0-20260721002947-23a17d44b5f3

Technical details

The vulnerability is a missing authorization and input validation flaw in the `/api/search/searchEmbedBlock` endpoint (kernel/api/search.go). The endpoint accepts a `stmt` parameter containing raw SQL and passes it verbatim to `model.SearchEmbedBlock()` without any validation, then to `sql.SelectBlocksRawStmtNoParse()`, which executes it via the global `siyuan.db` handle in database.go. The endpoint is gated by `CheckAuth` only, which permits `RoleReader` tokens and anonymous access when `Publish.Auth.Enable` is false. The statement executes on a read-write database handle using the vendored `88250/go-sqlite3` driver, which supports stacked statements (`;`-separated), allowing arbitrary side effects including writes and ATTACH operations. Comparable endpoints (`/api/query/sql`, `fullTextSearchBlock`) enforce `CheckSingleStatement`, `CheckReadonlyStatement`, and `CheckAdminRole` checks—all absent here. A post-hoc filter (`FilterEmbedBlocksByPublishAccess`) runs after execution and cannot prevent write side effects. The attack requires network access to port 6808 (publish mode) with auth disabled or a valid reader token; no CSRF token or special user interaction is required. Encrypted per-notebook databases are not affected; code execution is not reachable in default builds lacking `load_extension`.

Affected products

  • SiYuan SiYuan kernel < 0.0.0-20260721002947-23a17d44b5f3

Identifiers

  • CVE-2026-69084
  • GHSA-vh22-h7hf-www7
  • GO-2026-6377

Timeline

  • 2026-09-03: disclosed: GitHub Security Advisory GHSA-vh22-h7hf-www7 published
  • 2026-07-21: patched: Patched version 0.0.0-20260721002947-23a17d44b5f3 released
  • 2026-09-03: other: Reviewed and confirmed by GitHub Security Advisory team

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.