SiYuan authentication bypass in publish mode content endpoints

Severity: high · CVSS 8.6 · Published 2026-08-03

SiYuan is a personal knowledge management system with a publish mode that allows documents to be password-protected. The vulnerability allows anonymous users to read the full content of password-protected published documents by bypassing the password check on secondary content endpoints. An attacker can obtain internal document block IDs from publicly accessible search endpoints, then use those IDs to retrieve protected content through unprotected API endpoints, completely circumventing the password protection mechanism.

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

Quick answers

Is This vulnerability exploited in the wild?
No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
How severe is This vulnerability?
High severity, with a CVSS score of 8.6, published 3 August 2026.
Which products and versions are affected?
github.com/siyuan-note/siyuan/kernel (Go) < 3.7.3; SiYuan < 3.7.3.
Is there a fix for This vulnerability?
A patch was published on 2026-07-21: Fixed in v3.7.3 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is This vulnerability attacked?
It is attacked over the network, in a web application.
Am I affected?
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.

Technical details

This is an authentication bypass vulnerability (CWE-288) in SiYuan's publish mode affecting versions before v3.7.3. The root cause is inconsistent password enforcement: the primary getDoc endpoint correctly enforces publish-password checks via FilterContentByPublishAccess, but secondary content endpoints (getHeadingChildrenDOM, getHeadingDeleteTransaction, getHeadingLevelTransaction, getHeadingInsertTransaction, getBacklinkDoc, getBackmentionDoc) return rendered block DOM with no password verification. Combined with ID-leak endpoints like searchEmbedBlock that expose protected document block IDs while filtering content, an anonymous attacker on the unauthenticated publish mode port can chain these to retrieve full protected document content. The vulnerability requires only network access and no authentication; attack preconditions are met by design in published documents marked "protected" with a password. Impact is confidentiality-only (information disclosure); no data modification occurs. The fix involves applying the same publish-password/publish-access checks used in getDoc to all content-returning endpoints.

Affected products

  • SiYuan SiYuan < 3.7.3

Timeline

  • 2026-07-21: disclosed
  • 2026-08-03: advisory: Published to GitHub Advisory Database
  • 2026-07-21: patched: Fixed in v3.7.3

References

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