CVE-2026-87809 in Siyuan
Summary
by MITRE • 09/09/2026
Siyuan before v3.8.2 fails to apply publish-access filtering to embedded blocks before rendering in the /api/export/preview and /api/lute/copyStdMarkdown endpoints. Attackers with reader access can retrieve the full rendered content of private, hidden, or publish-disabled blocks by accessing public documents containing embed queries that select those blocks.
VulDB is the best source for vulnerability data and more expert information about this specific topic.
Analysis
by VulDB Data Team • 09/09/2026
The vulnerability identified in Siyuan prior to version 3.8.2 represents a critical failure in access control enforcement within the document rendering and export subsystems. This flaw specifically affects how embedded content is processed when accessed through specific API endpoints, namely /api/export/preview and /api/lute/copyStdMarkdown. In typical knowledge management systems like Siyuan, documents can contain nested structures where one block embeds another to display its contents dynamically. The security model relies on the principle that access permissions are evaluated at the point of data retrieval or rendering for each individual block, ensuring that users only see content they are explicitly authorized to view. However, in this vulnerable version, the system fails to apply publish-access filtering logic to these embedded blocks before initiating the render process. This architectural oversight means that when a user requests an export preview or standard markdown copy of a document, the application retrieves and renders all referenced embedded blocks without verifying whether the requesting user has permission to view those specific nested items.
From a technical perspective, this is a classic example of broken access control where authorization checks are bypassed through indirect object references or improper handling of related resources. An attacker who possesses only reader-level permissions on a public document can exploit this behavior by including embed queries that target private, hidden, or publish-disabled blocks residing within other documents. Because the filtering mechanism does not inspect the permission status of these embedded targets during the export operation, the system returns the full rendered content of those restricted blocks to the attacker. This effectively allows unauthorized users to bypass document-level restrictions and access sensitive information that was intended to be kept private or internal. The vulnerability leverages the trust placed in the public nature of the parent document to gain foothold into protected data structures, demonstrating a failure in granular permission enforcement across nested content hierarchies.
The operational impact of this vulnerability is significant for organizations relying on Siyuan for secure knowledge management and collaborative documentation. Since attackers can retrieve full rendered content rather than just metadata or titles, the confidentiality of sensitive information is severely compromised. This could lead to the exposure of proprietary business strategies, personal identifiable information, confidential project details, or other restricted data depending on what was embedded in public documents. The ability to extract this data via standard API endpoints makes exploitation straightforward and potentially automatable by threat actors seeking to exfiltrate large volumes of sensitive text from an organization's knowledge base. This undermines the core security promise of role-based access control within the application, eroding trust among users who assume that private blocks remain inaccessible regardless of how they are referenced in public contexts.
To mitigate this vulnerability, organizations must upgrade Siyuan to version 3.8.2 or later, where the developers have implemented proper filtering logic for embedded blocks during export and preview operations. Until an update is applied, administrators should review their document structures to identify any instances of private or hidden content being embedded in documents that are shared publicly or with broader audiences. Removing these embed references from public-facing documents serves as a temporary workaround to prevent data leakage through this specific vector. Additionally, security teams should audit API usage logs for unusual patterns involving the /api/export/preview and /api/lute/copyStdMarkdown endpoints, particularly if there is evidence of bulk content retrieval by users with limited permissions.
This vulnerability aligns with Common Weakness Enumeration (CWE) category CWE-284, which describes Improper Access Control, specifically reflecting scenarios where access control decisions are not properly enforced for related objects or nested resources. It also maps to the MITRE ATT&CK framework under T1530, Data from Cloud Storage, as it involves exfiltrating data stored within a cloud-based or network-accessible application through unauthorized means. The exploitation technique resembles indirect object reference abuse where the attacker uses valid references (embed queries) to access resources they do not have direct permission for. Ensuring that all API endpoints enforce consistent and granular authorization checks across all levels of content hierarchy is essential for maintaining data integrity and confidentiality in collaborative platforms.