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

CVE-2026-74904: SiYuan Information Disclosure Vulnerability

CVE-2026-74904 is an information disclosure flaw in SiYuan that exposes private block content and metadata to unauthorized users. This post explains its technical details, affected versions, impact, and mitigation steps.

Published:

CVE-2026-74904 Overview

CVE-2026-74904 is a missing authorization vulnerability in SiYuan, an open-source personal knowledge management application. Versions before v3.7.4 fail to enforce publish-mode access checks across 17 block metadata and content endpoints defined in kernel/api/block.go. Affected handlers include getRefText, checkBlockExist, and getBlockBreadcrumb. These endpoints are gated only by basic authentication through model.CheckAuth and omit publish-access filtering. Anonymous readers in publish mode can query arbitrary block identifiers to disclose private block content-derived text, structural metadata, and existence information from the entire workspace. The weakness is categorized as CWE-862 Missing Authorization.

Critical Impact

Unauthenticated network attackers can enumerate arbitrary block IDs and exfiltrate private note content, references, and workspace structure from SiYuan instances running in publish mode.

Affected Products

  • SiYuan note-taking application versions prior to v3.7.4
  • Self-hosted SiYuan kernel deployments exposing publish mode
  • SiYuan workspaces reachable over the network without additional access controls

Discovery Timeline

  • 2026-08-18 - CVE-2026-74904 published to NVD
  • 2026-08-18 - Last updated in NVD database

Technical Details for CVE-2026-74904

Vulnerability Analysis

SiYuan exposes a REST-style kernel API that serves both authenticated editors and anonymous readers when publish mode is enabled. In releases before v3.7.4, 17 handlers in kernel/api/block.go route through model.CheckAuth but skip the publish-mode authorization filter that restricts anonymous callers to published documents. As a result, an anonymous publish-mode reader can invoke handlers such as getRefText, checkBlockExist, and getBlockBreadcrumb against any block ID in the workspace, not only blocks that belong to published documents.

The disclosed information includes derived reference text drawn from block content, structural metadata such as breadcrumbs and parent relationships, and existence signals that confirm whether a specific block ID resides in the workspace. Attackers can chain these primitives to enumerate identifiers and reconstruct private notes. The vulnerability affects confidentiality only; integrity and availability of the workspace are not directly impacted.

Root Cause

The root cause is inconsistent authorization enforcement across the block API surface. model.CheckAuth verifies basic authentication but does not evaluate whether the caller is limited to publish-scope resources. The 17 affected handlers omit the secondary publish-access check applied elsewhere in the kernel, leaving authorization gaps on endpoints that return sensitive block data.

Attack Vector

The attack vector is network based and requires no privileges or user interaction. An attacker sends HTTP requests to the exposed SiYuan kernel with arbitrary block IDs supplied in the request body. Because block IDs are structured and iterable, attackers can brute-force or enumerate them, then call the vulnerable endpoints to extract content-derived text and structural metadata. See the GitHub Security Advisory GHSA-4vpg-gwqq-w44c and the VulnCheck advisory on SiYuan for handler-level detail.

Detection Methods for CVE-2026-74904

Indicators of Compromise

  • High volumes of anonymous requests to kernel endpoints such as /api/block/getRefText, /api/block/checkBlockExist, and /api/block/getBlockBreadcrumb.
  • Sequential or randomized block ID enumeration patterns originating from a single source IP.
  • Publish-mode sessions issuing block API calls that reference IDs outside the set of published documents.

Detection Strategies

  • Inspect SiYuan kernel access logs for unauthenticated calls to the 17 handlers listed in kernel/api/block.go and correlate them against the set of published document IDs.
  • Deploy web application firewall rules that rate-limit /api/block/* endpoints and flag high-cardinality block ID lookups from a single client.
  • Alert on responses that return non-empty content for block IDs known to belong to unpublished documents.

Monitoring Recommendations

  • Forward SiYuan kernel HTTP logs into a centralized log platform and retain them for post-incident review.
  • Track the ratio of successful block API responses to distinct block IDs per source, which highlights enumeration behavior.
  • Monitor egress volume from SiYuan hosts to identify content exfiltration following block API abuse.

How to Mitigate CVE-2026-74904

Immediate Actions Required

  • Upgrade SiYuan to v3.7.4 or later, which adds publish-access filtering to the affected block handlers.
  • Restrict network exposure of the SiYuan kernel to trusted networks or place it behind an authenticating reverse proxy.
  • Rotate any shared publish-mode credentials and audit the workspace for content that must remain private.

Patch Information

The SiYuan maintainers fixed CVE-2026-74904 in release v3.7.4 by adding publish-access authorization checks to the 17 affected handlers in kernel/api/block.go. Refer to the GitHub Security Advisory GHSA-4vpg-gwqq-w44c for the patch commit and remediation notes.

Workarounds

  • Disable publish mode until upgrading to v3.7.4, which removes the anonymous-reader attack surface.
  • Front the kernel with an authenticating reverse proxy that blocks anonymous access to /api/block/* paths.
  • Limit inbound connectivity to the SiYuan kernel using host firewalls or network ACLs.
bash
# Example nginx snippet to block anonymous access to the vulnerable block API
location /api/block/ {
    auth_basic "SiYuan Kernel";
    auth_basic_user_file /etc/nginx/.siyuan_htpasswd;
    proxy_pass http://127.0.0.1:6806;
}

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.