CVE-2026-87809 Overview
CVE-2026-87809 is an information disclosure vulnerability in Siyuan, a self-hosted personal knowledge management application. Versions before v3.8.2 fail to apply publish-access filtering to embedded blocks before rendering content through the /api/export/preview and /api/lute/copyStdMarkdown endpoints. Attackers with reader-level access can retrieve the full rendered content of private, hidden, or publish-disabled blocks by requesting public documents that contain embed queries selecting those restricted blocks. The flaw is classified under CWE-639: Authorization Bypass Through User-Controlled Key.
Critical Impact
Authenticated readers can bypass publish-access controls to exfiltrate confidential note contents that should remain private.
Affected Products
- Siyuan versions prior to v3.8.2
- Siyuan /api/export/preview endpoint
- Siyuan /api/lute/copyStdMarkdown endpoint
Discovery Timeline
- 2026-09-09 - CVE-2026-87809 published to the National Vulnerability Database (NVD)
- 2026-09-09 - Last updated in NVD database
Technical Details for CVE-2026-87809
Vulnerability Analysis
Siyuan supports embed queries, allowing one document to render the contents of other blocks inline. Access to a document is gated by publish-access settings that determine which blocks are visible to unauthenticated or reader-scoped users. The affected endpoints render document previews and copy standardized Markdown, but they resolve embedded block references without re-evaluating publish-access rules on the referenced blocks.
As a result, a public document that embeds a private, hidden, or publish-disabled block returns the full rendered content of the restricted block to any caller with reader access. The confidentiality of restricted notes, credentials pasted into private blocks, and internal documentation is broken while integrity and availability remain intact.
Root Cause
The root cause is missing authorization at the object-reference layer. The /api/export/preview and /api/lute/copyStdMarkdown handlers validate access to the parent document but do not filter the resolved set of embedded block IDs against the caller's publish-access scope prior to rendering. This is a textbook broken-access-control pattern where a secondary object lookup inherits the trust of the primary request context.
Attack Vector
The attack vector is network-based and requires low privileges (reader access). An attacker identifies a public document containing an embed query, then invokes the export preview or copy-Markdown endpoint against that document. The server evaluates the embed query, retrieves the referenced blocks including those marked private or publish-disabled, and returns the rendered output. No user interaction is required and exploitation does not alter server state.
No public proof-of-concept exploit is currently listed for this issue. See the GitHub Security Advisory GHSA-8wx4-fvqw-f5f8 and the VulnCheck Advisory for Siyuan for additional technical detail.
Detection Methods for CVE-2026-87809
Indicators of Compromise
- Unexpected HTTP POST or GET requests to /api/export/preview or /api/lute/copyStdMarkdown from reader-scoped accounts.
- High volumes of export or copy requests targeting public documents that reference many block IDs.
- Response payloads to reader accounts containing block content that maps to blocks marked private or publish-disabled in Siyuan's metadata.
Detection Strategies
- Enable access logging on the Siyuan API and alert on reader accounts calling the two affected endpoints outside expected usage patterns.
- Correlate exported block IDs from response bodies against the current publish-access configuration to identify leaks of restricted blocks.
- Baseline normal export and Markdown-copy volume per user and flag statistical outliers indicative of enumeration.
Monitoring Recommendations
- Forward Siyuan reverse-proxy access logs to a centralized logging platform for retention and searchability.
- Monitor for scripted user-agent strings and rapid sequential requests against export endpoints.
- Track authentication events tied to reader tokens and revoke tokens exhibiting suspicious access patterns.
How to Mitigate CVE-2026-87809
Immediate Actions Required
- Upgrade Siyuan to v3.8.2 or later on all self-hosted instances.
- Audit published documents for embed queries that reference private, hidden, or publish-disabled blocks and remove or rewrite them.
- Rotate any secrets or credentials that may have been stored in private blocks reachable via embed queries.
Patch Information
The Siyuan maintainers addressed the flaw in v3.8.2 by applying publish-access filtering to embedded blocks before rendering in the /api/export/preview and /api/lute/copyStdMarkdown endpoints. Refer to the GitHub Security Advisory GHSA-8wx4-fvqw-f5f8 for the upstream fix reference.
Workarounds
- Restrict network access to the Siyuan instance so that only trusted authenticated users can reach the API.
- Temporarily disable public document sharing until the upgrade to v3.8.2 is complete.
- Remove embed queries from any document that is exposed via publish access to prevent cross-scope block resolution.
# Configuration example: block anonymous and reader access to affected endpoints at the reverse proxy
location ~ ^/api/(export/preview|lute/copyStdMarkdown)$ {
allow 10.0.0.0/8;
deny all;
proxy_pass http://siyuan_backend;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

