CVE-2026-87810 in Siyuaninfo

Summary

by MITRE • 09/09/2026

Siyuan before v3.8.2 contains an information disclosure vulnerability in the POST /api/search/fullTextSearchBlock endpoint that filters private blocks from results but returns unfiltered match counts. Unauthenticated publish-mode readers can submit arbitrary search terms to learn whether matching content exists in hidden or unpublished documents and determine the number of matching blocks and pages.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Analysis

by VulDB Data Team • 09/09/2026

The vulnerability identified in SiYuan prior to version 3.8.2 represents a classic logic flaw within an information disclosure vector, specifically affecting the full-text search functionality exposed through the POST /api/search/fullTextSearchBlock endpoint. While the application correctly implements access control mechanisms that filter out private or unpublished blocks from the actual content returned to unauthenticated users in publish mode, it fails to apply equivalent filtering logic to the metadata associated with those results. Specifically, the response payload includes aggregate statistics such as the total number of matching blocks and pages found for a given search query. This discrepancy between filtered data and unfiltered metrics creates a side-channel through which an attacker can infer sensitive information about documents that are explicitly intended to be hidden from public view.

From a technical perspective, this flaw stems from an incomplete implementation of access control checks during the aggregation phase of the search operation. When a user submits a search term, the backend processes the query against all indexed content but applies filtering only at the final output stage for individual items. The counting mechanism, however, operates on the pre-filtered dataset or fails to cross-reference the count with the current user's permission level before returning the summary statistics. This allows an unauthenticated attacker in publish mode to send arbitrary search queries and observe whether a non-zero match count is returned. If matches are reported for terms that should only exist within private notes, it confirms both the existence of those documents and potentially their content structure without ever revealing the actual text itself.

The operational impact of this vulnerability extends beyond simple data leakage; it facilitates reconnaissance and enumeration attacks against the target system. An attacker can systematically probe various keywords to map out which unpublished or private sections exist within a SiYuan instance, effectively bypassing the intended privacy boundaries established by the application's access control policies. This capability is particularly dangerous in scenarios where sensitive organizational information, personal data, or proprietary content is stored and shared via publish mode for broader accessibility while keeping certain details confidential. The ability to determine the volume of matching blocks can also aid attackers in refining their search strategies, allowing them to prioritize high-value targets based on the density of relevant keywords found within hidden documents.

This vulnerability aligns with CWE-209, which describes an information exposure through an error message or other technical details that could be exploited by attackers, as well as CWE-611, concerning improper restriction of XML external entity references if applicable to parsing logic, though more accurately it falls under CWE-284: Improper Access Control. In the context of the MITRE ATT&CK framework, this behavior corresponds to T1071 Application Layer Protocol, where attackers use standard web protocols to gather information, and specifically relates to reconnaissance activities aimed at identifying available resources within a system. The lack of consistent filtering between data retrieval and metadata generation highlights a common oversight in API design where state or count metrics are not treated with the same security rigor as the primary payload data.

To mitigate this vulnerability, it is imperative that developers enforce strict access control checks on all components of the search response, including aggregate counts and statistical summaries. The filtering logic applied to individual block results must be mirrored in the calculation of match totals so that only blocks accessible to the current user context are included in the final count returned by the API. Additionally, implementing rate limiting on the search endpoint can help mitigate automated enumeration attacks that exploit this information leak. Upgrading to SiYuan version 3.8.2 or later is required as these updates address the underlying logic error ensuring that metadata reflects only accessible content. Organizations relying on older versions should consider temporary compensating controls such as restricting access to the publish mode interface until an upgrade can be performed, thereby preventing unauthenticated actors from leveraging this side-channel for intelligence gathering.

Responsible

VulnCheck

Reservation

09/09/2026

Disclosure

09/09/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!