Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-87810

CVE-2026-87810: Siyuan Information Disclosure Vulnerability

CVE-2026-87810 is an information disclosure flaw in Siyuan before v3.8.2 affecting the search endpoint. Unauthenticated users can probe for hidden content through match counts. This article covers technical details, impact, and remediation.

Published:

CVE-2026-87810 Overview

Siyuan versions before v3.8.2 contain an information disclosure vulnerability in the POST /api/search/fullTextSearchBlock endpoint. The endpoint filters private blocks from returned results but leaks the unfiltered match counts. Unauthenticated readers operating in publish mode can submit arbitrary search terms and infer whether matching content exists in hidden or unpublished documents. Attackers can also determine the number of matching blocks and pages, enabling reconnaissance against confidential note content.

Critical Impact

Unauthenticated remote attackers can enumerate the existence and volume of matching content in private Siyuan documents without valid credentials.

Affected Products

  • Siyuan note-taking application versions prior to v3.8.2
  • Deployments with publish mode enabled and accessible to unauthenticated readers
  • Self-hosted Siyuan instances exposing the /api/search/fullTextSearchBlock endpoint

Discovery Timeline

  • 2026-09-09 - CVE-2026-87810 published to NVD
  • 2026-09-09 - Last updated in NVD database

Technical Details for CVE-2026-87810

Vulnerability Analysis

The vulnerability falls under [CWE-200] Information Exposure. Siyuan implements a publish mode that exposes selected notebooks to anonymous readers while keeping other documents private. The fullTextSearchBlock API applies an access filter to the returned block list but computes match counts before that filter is applied. The response therefore returns filtered content alongside unfiltered numeric metadata.

An attacker can iterate through candidate terms and observe count differences to confirm the presence of specific strings inside private documents. This forms an oracle for extracting sensitive keywords, project names, credentials fragments, or any other content stored in hidden blocks. The attack requires no authentication and no user interaction.

Root Cause

The root cause is inconsistent access-control enforcement between two data paths in the same API response. Result filtering occurs on the block collection returned to the client, but the aggregate count fields are populated from the pre-filter query result. Because publish-mode requests inherit an anonymous session, the mismatch exposes metadata that should be governed by the same authorization boundary.

Attack Vector

The attack is delivered over the network against any Siyuan instance running in publish mode. The attacker sends a crafted JSON body to POST /api/search/fullTextSearchBlock containing a chosen query term. The response returns the visible matches together with the total match count across all documents, including private ones. Repeated queries with varied terms allow content enumeration without triggering standard authentication controls.

See the GitHub Security Advisory and the VulnCheck Advisory for Siyuan for additional technical detail.

Detection Methods for CVE-2026-87810

Indicators of Compromise

  • High volumes of POST requests to /api/search/fullTextSearchBlock from a single source address within a short window.
  • Anonymous or publish-mode sessions submitting search queries containing sensitive terms such as internal project names, credential prefixes, or personally identifiable information.
  • Sequential requests with incrementally varied search strings suggesting automated enumeration.

Detection Strategies

  • Inspect Siyuan access logs for repeated calls to the fullTextSearchBlock endpoint from unauthenticated clients.
  • Compare request rates against a baseline of normal reader activity and alert on statistically significant deviations.
  • Correlate search API traffic with source reputation data to identify scanning infrastructure or anonymizing proxies.

Monitoring Recommendations

  • Enable verbose HTTP access logging on the reverse proxy fronting Siyuan and forward logs to a centralized analytics platform.
  • Deploy a web application firewall rule to rate-limit unauthenticated requests to /api/search/* endpoints.
  • Track response payload sizes and total-count fields to identify probing patterns that pivot on numeric metadata.

How to Mitigate CVE-2026-87810

Immediate Actions Required

  • Upgrade Siyuan to version v3.8.2 or later on all self-hosted instances.
  • Restrict publish-mode access to trusted networks or authenticated readers until the patch is applied.
  • Audit publish-mode notebooks and remove any content that must not be inferable through search metadata.

Patch Information

The issue is resolved in Siyuan v3.8.2. The fix aligns the search endpoint so that match counts respect the same access filter applied to returned blocks. Refer to the GitHub Security Advisory GHSA-g45v-hxvm-wccj for release details and commit references.

Workarounds

  • Disable publish mode until upgrading to v3.8.2 if unauthenticated read access is not required.
  • Place Siyuan behind an authenticating reverse proxy that rejects anonymous requests to /api/search/fullTextSearchBlock.
  • Segregate sensitive notebooks into a separate Siyuan instance that does not expose the publish-mode API.
bash
# Example nginx rule to block anonymous access to the vulnerable endpoint
location = /api/search/fullTextSearchBlock {
    if ($http_authorization = "") { return 403; }
    proxy_pass http://siyuan_upstream;
}

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.