Executive brief
SiYuan is a note-taking and knowledge management application that supports publishing documents with optional password protection. The application's tag API endpoint fails to check publish passwords when returning tag information, allowing readers to enumerate all tags used in password-protected documents without authentication. This disclosure reveals internal terminology, project codenames, and subject matter that authors intended to protect with passwords, potentially exposing sensitive organizational or personal information.
Technical details
The vulnerability exists in the /api/tag/getTag endpoint, which filters tag results using FilterTagsByPublishIgnore—a function that only checks document visibility but omits password authentication checks. The vulnerable component consults CheckPathAccessableByPublishIgnore, which returns true for any visible document including those carrying a publish password. The correct gate, checkBlockTreeAccessableByPublishAccess, requires both visibility and password validation via CheckPublishAuthCookie. An unauthenticated attacker can make a POST request to /api/tag/getTag and receive all tag labels and their occurrence counts from password-protected but visible documents, disclosing user-authored content and revealing usage patterns. The project's own commit 82e9ded42 ("Enforce publish access for graph nodes") remediated an identical tier mismatch on a sibling endpoint; FilterTagsByPublishIgnore was not upgraded alongside it. The vulnerability is fixed in v3.7.4 by replacing the visible-only filter with a password-aware filter that validates publish authentication cookies before exposing tags.
Affected products
- SiYuan SiYuan before v3.7.4
Timeline
- 2026-08-12: disclosed
- 2026-07-26: patched: Patched in v3.7.4
- 2026-09-04: other: Advisory withdrawn as duplicate of GHSA-mp7r-57w4-5qm3