CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-72800

CVE-2026-72800: Missing Authorization in SiYuan Personal Knowledge Management System

Alon Barad
Alon Barad
Software Engineer

Sep 4, 2026·5 min read·2 visits

Executive Summary (TL;DR)

Missing authorization checks in SiYuan's publish-mode API endpoints allow unauthenticated attackers to discover database schemas and private block IDs across the entire workspace.

A security vulnerability in the SiYuan local-first personal knowledge management system allows unauthenticated remote attackers to bypass logical boundary controls in publish (read-only) mode. By interacting with endpoints that lack proper publish-access validation, an attacker can disclose the application's internal database schemas and harvest block IDs across both public and private notebooks. This metadata leakage compromises the confidentiality of restricted documents and provides foundational information for targeted extraction.

Vulnerability Overview

SiYuan is a local-first personal knowledge management application that supports a publish mode, also known as read-only mode. This configuration is designed to share specific public documents with web readers while keeping private, password-protected, or encrypted notebooks confidential. Secure implementation of this feature requires the application backend to enforce strict data-access scopes for all client-initiated queries.

An architectural authorization gap exists in versions prior to v3.7.4. The server fails to enforce publish-access validation on endpoints responsible for retrieving attribute view schemas and matching block definitions. Consequently, unprivileged remote users can cross the logical boundary separating public and private documents.

This vulnerability is classified under CWE-862 (Missing Authorization). The impact is limited to metadata and structured layout exposure, which is why it receives a CVSS v3.1 base score of 5.8. However, this exposure provides key layout parameters that can facilitate further structured information gathering.

Root Cause Analysis

The root cause is a failure to enforce the publish-access state (model.IsReadOnlyRoleContext) inside the business logic of specific backend APIs. This omission manifests across three distinct logical pathways in the application.

First, the /api/av/getAttributeViewKeysByID endpoint was implemented without routing through the model.CheckReadonly middleware in the server's API router. Because this middleware was omitted, unauthenticated read-only sessions could request structural database keys (avID) and retrieve descriptions, column definitions, and template vocabularies for any database.

Second, the /api/block/getBlockDefIDsByRefText endpoint was programmed to query and return block definition IDs matching a given anchor search text without verifying whether the source documents were designated as public. The function model.GetBlockDefIDsByRefText processed raw queries against the database and directly returned all matched IDs.

Third, navigation and metadata endpoints such as getBlockTreeInfos, getBlockSiblingID, and getBlockRelevantIDs blind-queried internal model helpers without validating that the targeted block ID resided inside the active user's allowed publish context. These combined flaws allowed complete block-ID mapping of private notebooks.

Code Analysis

The remediation implemented in SiYuan v3.7.4 introduces robust validation checkpoints in the file kernel/api/block.go and updates the HTTP router in kernel/api/router.go.

In the patched version, block traversal endpoints extract the target notebook (boxID) and validate the block ID's accessibility in read-only mode using isBlockPublishAccessible. The following code snippet demonstrates the authorization logic added to block APIs:

// Patched logic ensuring publish authorization gates
func checkBlockPublishAccessInBox(c *gin.Context, id, boxID string, ret *gulu.Result) bool {
	if isBlockPublishAccessible(c, id, boxID) {
		return true
	}
	ret.Code = -1
	ret.Msg = "not found"
	return false
}
 
func isBlockPublishAccessible(c *gin.Context, id, boxID string) bool {
	if !model.IsReadOnlyRoleContext(c) {
		return true
	}
	return model.CheckBlockIdAccessableByPublishAccessInBox(c, model.GetPublishAccess(), id, boxID)
}

Additionally, the reference text querying logic was patched to sanitize the list of returned matching IDs using the filterBlockIDsByPublishAccess function. This prevents unauthenticated users from obtaining block IDs from unauthorized paths:

func getBlockDefIDsByRefText(c *gin.Context) {
	// ... payload parsing ...
	anchor := arg["anchor"].(string)
	ids := model.GetBlockDefIDsByRefText(anchor)
	ids = filterBlockIDsByPublishAccess(c, ids, "") // Filter unexposed block IDs
	// ... response building ...
}

Finally, the API routing configuration in kernel/api/router.go was updated to explicitly include the missing model.CheckReadonly middleware for the attribute view schema retrieval endpoint, preventing unauthorized API interaction:

// Router configuration fix
ginServer.Handle("POST", "/api/av/getAttributeViewKeysByID", model.CheckAuth, model.CheckReadonly, getAttributeViewKeysByID)

Exploitation Methodology

Exploitation of CVE-2026-72800 does not require authentication or user interaction. An attacker leverages standard HTTP POST requests to discover schema structures and enumerate valid block IDs.

To construct an ID-enumeration oracle, the attacker sends a POST request targeting /api/block/getBlockDefIDsByRefText with a generic search parameter, such as {"anchor": "confidential"}. The vulnerable server queries the global workspace database and returns a JSON array of matching block IDs, regardless of whether they belong to published notebooks or encrypted offline files.

Once the attacker possesses a target block ID, they query /api/av/getAttributeViewKeysByID to harvest structural layouts, database keys, template setups, and metadata columns. Because the middleware checks were omitted, the backend returns the database's schema layout, exposing sensitive structural properties.

Impact Assessment

The security impact of CVE-2026-72800 is a partial loss of confidentiality. Because the vulnerability only exposes structural properties (such as schemas, template parameters, and block identifiers) rather than full document content, the overall impact is limited.

However, the leakage of block IDs across the entire workspace breaks the logical partition between public and private documents. An attacker can use these harvested IDs to confirm the existence of confidential projects, analyze internal documentation structures, and build relationships between private notes.

This structural exposure serves as a reconnaissance step. An attacker can combine these enumerated identifiers with other potential application flaws or access controls to target specific, unmapped assets within the SiYuan deployment.

Mitigation & Remediation

The recommended remediation is to upgrade the SiYuan application deployment to version v3.7.4 or later. This release enforces authorization boundaries across all affected endpoints and binds the required middleware filters.

If upgrading immediately is not possible, security administrators should implement temporary mitigation strategies. Access to administrative and data APIs can be restricted by configuring an upstream reverse proxy (such as Nginx, Apache, or Cloudflare) to block incoming external requests to specific URL prefixes:

# Example block for critical metadata endpoints at the reverse proxy
location /api/av/getAttributeViewKeysByID {
    deny all;
}
location /api/block/getBlockDefIDsByRefText {
    deny all;
}

Additionally, security teams should audit their active network logs for high volumes of POST requests to /api/block/getBlockDefIDsByRefText and /api/av/ endpoints, which may indicate automated exploitation attempts.

Official Patches

siyuan-noteMitigation commit protecting block metadata
siyuan-noteMitigation commit protecting routing registry and filtering definitions

Fix Analysis (2)

Technical Appendix

CVSS Score
5.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

SiYuan Note-taking Application

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan
siyuan-note
< 3.7.43.7.4
AttributeDetail
CWE IDCWE-862 (Missing Authorization)
Attack VectorNetwork (Unauthenticated)
CVSS v3.1 Score5.8 (Medium)
CVSS v4.0 Score6.9 (Medium)
EPSS Score0.00237
EPSS Percentile14.51%
Exploit Statuspoc
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action.

References & Sources

  • [1]SiYuan GitHub Security Advisory GHSA-5fhr-f75j-8wr9
  • [2]VulnCheck Advisory for SiYuan Security Gaps

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 2 hours ago•CVE-2026-72803
6.9

CVE-2026-72803: Information Disclosure via Missing Authorization in SiYuan API

An information disclosure vulnerability exists in the SiYuan personal knowledge management system versions prior to v3.7.4. The application fails to enforce publish-access filters on block attribute retrieval endpoints. Consequently, unauthenticated remote attackers can bypass document-level protection rules (such as password protection or disabled-publish flags) to retrieve sensitive block-level attributes, including aliases, memos, block names, and custom metadata fields, by querying the API using guessed or known block IDs.

Alon Barad
Alon Barad
3 views•7 min read
•about 3 hours ago•GHSA-7J72-F6WG-CXW6
8.6

CVE-2026-68584: Authentication Bypass via Auxiliary Content Endpoints in SiYuan

An authentication bypass vulnerability (classified as CWE-288) exists in the publish-mode component of SiYuan, a Go-based note-taking application. This security flaw allows unauthenticated remote attackers to bypass password-protected note boundaries by leveraging auxiliary block endpoints that fail to enforce document access checks. Attackers can exploit this issue by first harvesting document metadata via a public search endpoint and subsequently fetching full rendered document contents using vulnerable block endpoints. This technical analysis explores the root cause, exploitation methodology, and remediation path.

Alon Barad
Alon Barad
2 views•7 min read
•about 4 hours ago•CVE-2026-77465
7.5

CVE-2026-77465: Uncontrolled Recursion in toml-node Deserializer Leads to Denial of Service

An uncontrolled recursion vulnerability (CWE-674) in the toml-node NPM package (published as toml) prior to version 4.2.0 allows unauthenticated remote attackers to trigger process-wide Denial of Service (DoS) crashes. By submitting TOML payloads with deep bracket or brace nesting, attackers exhaust the V8 runtime stack limit.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 5 hours ago•CVE-2026-73295
5.4

CVE-2026-73295: DOM-based Cross-Site Scripting (XSS) in Material for MkDocs Search Suggestions

CVE-2026-73295 is a DOM-based Cross-Site Scripting (XSS) vulnerability affecting Material for MkDocs versions 7.2.0 through 9.7.6. When the optional 'search.suggest' feature is enabled, the client-side 'mountSearchSuggest' function processes user-controlled inputs from the URL 'q' parameter and writes them directly to the DOM using an unsafe innerHTML sink without sanitization.

Alon Barad
Alon Barad
4 views•6 min read
•about 6 hours ago•CVE-2026-71869
9.3

CVE-2026-71869: Remote Code Execution in Orval via OpenAPI Default Value Template Literal Injection

CVE-2026-71869 is a critical-severity code injection vulnerability in the Orval code generator (packages: orval, @orval/core, @orval/zod) prior to version 8.21.0. This flaw allows remote attackers to execute arbitrary JavaScript code at import-time by embedding malicious payloads into the default values of OpenAPI or Swagger specifications. This report details the root cause, exploitation mechanism, and patch remediation.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 7 hours ago•CVE-2026-61625
6.8

CVE-2026-61625: Arbitrary File Write via Path Traversal in VictoriaMetrics vmrestore

CVE-2026-61625 is a path traversal vulnerability (CWE-22) within the `vmrestore` utility of VictoriaMetrics. When restoring database shards from a compromised or malicious backup source, the application fails to validate the paths of backup parts before creating and writing files. By injecting objects with directory traversal sequences (such as `../`) into the remote backup storage, an attacker can write arbitrary files to out-of-bounds locations on the system executing the restore operation. Depending on the process privileges, this can result in host compromise via remote code execution.

Amit Schendel
Amit Schendel
6 views•6 min read