CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-72805

CVE-2026-72805: Missing Authorization in SiYuan Note Block APIs Leads to Information Disclosure

Alon Barad
Alon Barad
Software Engineer

Sep 4, 2026·6 min read·28 visits

Executive Summary (TL;DR)

Missing publish-access checks in SiYuan Note block APIs allow unauthorized access to protected document content and layout metadata via direct API requests.

SiYuan Note versions before v3.7.4 fail to enforce publish-access checks on several block API endpoints. This vulnerability allows anonymous readers or authorized accounts with low-privileged roles to retrieve sensitive document titles, ancestor block content snippets, reference text, and path metadata for publish-forbidden or password-protected documents by supplying target block IDs.

Vulnerability Overview

SiYuan Note is an open-source, local-first personal knowledge management system that supports fine-grained block-level editing and markdown formats. To facilitate content sharing, the application includes a 'Publish Mode' that lets users serve selected notebooks to external readers. Within this model, administrators can restrict access down to individual notebooks or documents, enforcing password protection or completely forbidding publication.\n\nThe attack surface for this system includes the API endpoints exposed during Publish Mode. While primary content-delivery APIs are designed to check read authorization, several metadata and auxiliary endpoints did not undergo identical scrutiny. Specifically, the application exposed endpoints for retrieving block structures, parent paths, and block references without validating whether those blocks belonged to restricted files.\n\nThis flaw is classified under CWE-862 (Missing Authorization) and carries a CVSS v4.0 base score of 6.9. It allows unauthenticated network attackers or low-privileged accounts to bypass document-level privacy controls. By submitting requests targeting specific block identifiers, an unauthorized actor can partially reconstruct protected document trees and extract restricted content.

Root Cause Analysis

The root cause of CVE-2026-72805 lies in the uneven application of authorization filters within the block-related API routers in the kernel/api/block.go module. The core content-retrieval function, getBlockInfo, implemented a validation routine known as checkBlockPublishAccess. This helper validated if the request environment operated under a read-only context and verified whether the target block ID belonged to an authorized, published resource.\n\nHowever, several parallel API endpoints handling block metadata did not execute this validation logic. The affected handlers include getBlockTreeInfos, getBlockSiblingID, getBlockRelevantIDs, getRefText, and getBlockBreadcrumb. These endpoints processed incoming JSON requests and directly invoked corresponding database service layers such as model.GetBlockTreeInfosInBox or model.BuildBlockBreadcrumbInBox using only the user-provided block ID.\n\nBecause the backend failed to assert whether the queried block identifier was part of a published, non-password-protected notebook, the database queries succeeded unconditionally. This design flaw allowed the retrieval of structure and content snippets from blocks inside encrypted SQLCipher databases, crossing planned notebook boundaries. Security boundaries became ineffective because the application assumed the client already possessed legitimate access based solely on knowing or guessing a block ID.\n\nmermaid\ngraph LR\n A["Unauthenticated Attacker"] --> B["API Endpoint: /api/block/getRefText"]\n B --> C{"Check Authorization?"}\n C -->|No| D["Query SQLCipher DB directly"]\n D --> E["Leak sensitive block content"]\n

Code Analysis

The patch resolved the authorization omissions by updating the routing handlers in kernel/api/block.go. Prior to the fix, the getBlockTreeInfos handler queried block tree information without validating the requested block IDs. The patch introduces a helper function filterBlockIDsByPublishAccess to sanitize the requested block list prior to database query execution.\n\ngo\n// Patched getBlockTreeInfos in kernel/api/block.go\nboxID := encryptedNotebookFromArg(arg)\nids = filterBlockIDsByPublishAccess(c, ids, boxID)\nret.Data = model.GetBlockTreeInfosInBox(ids, boxID)\n\n\nFor endpoints like getBlockSiblingID, getBlockRelevantIDs, getRefText, and getBlockBreadcrumb, the developers integrated isBlockPublishAccessible. If the requested block fails this access check, the endpoint returns an empty dataset or an error code instead of querying the backend model:\n\ngo\n// Patched verification logic in kernel/api/block.go\nif !isBlockPublishAccessible(c, id, boxID) {\n ret.Data = map[string]string{\n "parent": "",\n "next": "",\n "previous": "",\n }\n return\n}\n\n\nAdditionally, database querying logic in kernel/model/publish_access.go was refactored. The function CheckBlockIdAccessableByPublishAccess now delegates execution to CheckBlockIdAccessableByPublishAccessInBox. This forces lookups to remain bounded within the specific notebook (boxID) context, preventing attackers from bypassing access restrictions by targeting blocks stored in unlinked or encrypted notebooks.

Exploitation

An attack targeting CVE-2026-72805 requires the target SiYuan Note instance to run in Publish Mode. The attacker must obtain or predict a valid block ID belonging to a forbidden or password-protected document. Block identifiers in SiYuan are unique keys that are sometimes exposed in transaction logs, public references, or predictable sequential structures.\n\nOnce a block ID is identified, the attacker crafts direct HTTP POST requests to the vulnerable endpoints. For example, querying /api/block/getRefText with a restricted block ID bypasses access control. The backend retrieves the database representation of the block and responds with the raw text contents, ignoring the fact that the notebook itself is publish-forbidden.\n\njson\nPOST /api/block/getRefText HTTP/1.1\nHost: target-instance.local\nContent-Type: application/json\n\n{\n "id": "20260724000002-docid01"\n}\n\n\nBy executing similar queries against the sibling and breadcrumb endpoints, the attacker can map the structural layout of the private document tree. This step-by-step extraction enables an unauthorized party to reconstruct complete document paths, titles of parent folders, and content flows without providing any authentication credentials.

Impact Assessment

The security impact of this vulnerability is categorized as moderate confidentiality loss, corresponding to a CVSS v4.0 base score of 6.9. Because the vulnerability is restricted to information disclosure, there is no threat to system integrity or availability. However, for users relying on password protection or publishing restrictions to protect intellectual property or sensitive logs, this vulnerability constitutes a direct bypass of those security controls.\n\nThe scope is local to the published notebook instance, but the impact can extend to secondary boundaries. This is because document hierarchies or breadcrumbs may leak information about user-system file paths or other organizational structures. The exploitation complexity is low, and no user interaction is required, raising the likelihood of successful automated scraping if block IDs are discovered.\n\nCurrently, there are no records indicating active exploitation in the wild, nor have weaponized exploit payloads been cataloged. The EPSS score remains low, suggesting that mass targeting of this vulnerability is unlikely. Nevertheless, because private knowledge bases often contain high-value data such as internal hostnames, passwords, and sensitive narratives, prompt mitigation is necessary.

Remediation

The primary remediation path is upgrading the SiYuan Note application to version v3.7.4 or later. This release introduces complete authorization validation on all exposed metadata and relational block endpoints. The security mechanisms fully integrate the isBlockPublishAccessible validation, preventing queries from escaping the authorized scope.\n\nFor instances where immediate updates are impractical, administrators should disable Publish Mode entirely. If the notebook is strictly meant for private use, keeping Publish Mode inactive removes the vulnerable attack surface from network exposure. This is the most effective operational workaround to guarantee confidentiality.\n\nAdditionally, network-level access controls should be deployed. Administrators can restrict traffic to the SiYuan Note interface via a reverse proxy (e.g., Nginx, Caddy) combined with IP address filtering or HTTP basic authentication. If Publish Mode is required for a subset of users, Web Application Firewall (WAF) policies should be configured to drop unauthenticated external traffic directed to /api/block/getBlockBreadcrumb, /api/block/getRefText, /api/block/getBlockTreeInfos, /api/block/getBlockSiblingID, and /api/block/getBlockRelevantIDs.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

SiYuan Note

Affected Versions Detail

Product
Affected Versions
Fixed Version
siyuan
siyuan-note
>= 0, < 3.7.43.7.4
AttributeDetail
Vulnerability IDCVE-2026-72805
Weakness ClassCWE-862 (Missing Authorization)
CVSS v4.0 Score6.9 (Medium)
Attack VectorNetwork (AV:N)
Exploit StatusNone (No public PoC or weaponized exploit)
KEV StatusNot listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action.

Vulnerability Timeline

Official security patch committed to the siyuan-note/siyuan repository
2026-07-23
Vulnerability coordination completed; officially disclosed and assigned CVE-2026-72805
2026-08-12
CVE record updated on CVE.org
2026-08-14
Vulnerability details finalized in the National Vulnerability Database (NVD)
2026-08-26

References & Sources

  • [1]GitHub Security Advisory GHSA-67x2-mq63-v9vm
  • [2]Official SiYuan Fix Commit
  • [3]VulnCheck Security Advisory

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 20 hours ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 22 hours ago•CVE-2026-107848
3.5

CVE-2026-107848: Cross-Site Request Forgery (CSRF) in Contao Backend Actions via GET Requests

Contao Open Source CMS versions 4.0.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 contain a Cross-Site Request Forgery (CSRF) vulnerability in backend parameter handling. The `RequestTokenListener` component validates anti-CSRF tokens solely for HTTP POST requests, while GET-based declarative guards run only when an `act` parameter is present in the query string. Consequently, custom backend actions dispatched via alternative parameters such as `key=` can execute without CSRF token verification when triggered by an authenticated user.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 23 hours ago•CVE-2026-107843
5.3

CVE-2026-107843: Unthrottled Activation Email Resend and Account Enumeration in Contao CMS

Contao CMS versions 4.1.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 fail to validate form submission tokens and enforce rate limiting when processing activation email resend requests via HTTP POST, enabling resource exhaustion and account state enumeration.

Amit Schendel
Amit Schendel
8 views•4 min read
•1 day ago•CVE-2026-107842
5.3

CVE-2026-107842: Information Disclosure via Stale Indexing in Contao Search Module

An information disclosure vulnerability in Contao CMS allows unauthenticated site visitors to view protected page titles, URLs, and text excerpts through search queries when protected page indexing is disabled after previously being enabled.

Amit Schendel
Amit Schendel
9 views•4 min read
•1 day ago•GHSA-G38J-7V97-X298
6.5

GHSA-G38J-7V97-X298: Missing Authorization Check in Vikunja CalDAV Task Relation Creation

In Vikunja prior to version 2.6.0, relation creation via the CalDAV endpoint fails to invoke the TaskRelation.CanCreate authorization check. This missing access control allows an authenticated user to establish unauthorized relationships and perform write operations against any task, provided its unique identifier (UID) is known.

Alon Barad
Alon Barad
12 views•5 min read
•1 day ago•GHSA-3HC7-R24J-RPWC
6.8

GHSA-3hc7-r24j-rpwc: Cross-Project Task Disclosure via Subtask Expansion in Vikunja

A cross-project information disclosure vulnerability in Vikunja allows authenticated users with read access to one project to view private task details from unauthorized projects via subtask expansion parameters.

Alon Barad
Alon Barad
9 views•5 min read