Executive brief
SiYuan's encrypted notebook feature protects sensitive content by encrypting entire notebooks. However, a critical flaw in the authorization system for its publish mode (a feature that allows selective sharing of content) causes encrypted notebooks to be treated as publicly readable by default. While an encrypted notebook is unlocked by the legitimate owner, any remote user can access the full, decrypted content of all documents in that notebook without authentication or any encryption keys. This defeats the entire confidentiality guarantee of the encryption feature.
Technical details
The vulnerability is a logic flaw in the publish-access gate that uses an opt-out allowlist pattern in `publishAccess.json`. The gate returns "accessible" for any notebook not explicitly listed as private, but encrypted notebooks are never written to this allowlist because the encryption subsystem does not interact with it. Consequently, unlocked encrypted notebooks are incorrectly treated as public. An unauthenticated attacker can enumerate encrypted notebooks and retrieve fully decrypted document content through three API endpoints (`lsNotebooks`, `listDocsByPath`, `getDoc`) without providing any credentials or encryption keys. The core authorization function `checkBlockTreeAccessableByPublishAccess()` applies no check for encryption status, causing encrypted notebooks to pass access control checks. Exposure is bounded to the period while the notebook is unlocked by the legitimate user, but no special conditions or attacker actions are required to trigger the vulnerability during that window.
Affected products
- SiYuan SiYuan < 0.0.0-20260726020813-a25c2dd06aae
Timeline
- 2026-09-08: disclosed: GitHub Advisory published
References
- https://api.github.com/users/shirshakopencti
- https://github.com/shirshakopencti
- https://api.github.com/users/shirshakopencti/gists%7B/gist_id%7D
- https://api.github.com/users/shirshakopencti/repos
- https://avatars.githubusercontent.com/u/210834347?v=4
- https://api.github.com/users/shirshakopencti/events%7B/privacy%7D