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-72802

CVE-2026-72802: Sensitive Information Disclosure via Administrative Asset Resolvers in SiYuan Note

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 4, 2026·6 min read·2 visits

Executive Summary (TL;DR)

An authorization bypass through user-controlled keys in SiYuan Note allows unauthenticated readers to extract absolute local filesystem paths, exposing host usernames and operating system layout information.

SiYuan Note versions prior to v3.7.4 contain an information disclosure vulnerability in the `/api/asset/resolveAssetPath` endpoint. This endpoint returns absolute backend filesystem paths unmodified to CheckAuth-only requests. Low-privileged users or unauthenticated readers under publish mode can exploit this to leak the local directory layout, operating system username, and overall host deployment structure.

Vulnerability Overview

SiYuan Note is a local-first personal knowledge management system designed to support offline-first editing, cloud synchronization, and self-hosted publishing. When configured in publish mode, the application allows documents and accompanying assets to be shared with standard users or the public web.

The vulnerability is classified under CWE-639 (Authorization Bypass Through User-Controlled Key). The affected components are the administrative-tier asset resolution APIs located inside the Go-based application backend. These endpoints fail to restrict access to authenticated administrative users, exposing severe structural information to lower-privileged read-only roles.

An attacker interacting with a public or low-privileged view of a SiYuan Note instance can query the server's asset management routing paths. By specifying relative asset paths harvested from published notes, the attacker can leverage the underlying application directory mapping handlers to retrieve unmasked absolute backend file paths. This disclosure exposes local user directory structures, OS layouts, and underlying host configuration environments.

Root Cause Analysis

The vulnerability stems from an inadequate authorization architecture in kernel/api/router.go. Specifically, three sensitive administrative endpoints are registered with only basic session verification middleware: /api/asset/resolveAssetPath, /api/asset/getUnusedAssets, and /api/asset/getMissingAssets.

The fundamental middleware layer model.CheckAuth ensures that a requester has a valid session. However, under SiYuan's permission model, when an instance is in publish mode, anonymous visitors or low-privileged users (such as those holding the model.RoleReader role) possess a valid session state that satisfies this basic check.

When a request reaches the /api/asset/resolveAssetPath endpoint, the internal application logic retrieves the storage path of the specified asset by executing model.GetAssetAbsPathInBox(path, ""). Because the API handler directly returns the output of this resolution to the response buffer without sanitizing, mapping, or relativizing the string, the host server's local file paths are returned to the client in plain text.

Code Analysis and Security Regression Tests

Analyzing the patch in kernel/api/router.go confirms that the vulnerability was resolved by appending the model.CheckAdminRole middleware to the vulnerable routes.

Below is the comparison between the vulnerable and patched endpoint definitions:

// Vulnerable routing configuration
ginServer.Handle("POST", "/api/asset/resolveAssetPath", model.CheckAuth, resolveAssetPath)
ginServer.Handle("POST", "/api/asset/getUnusedAssets", model.CheckAuth, getUnusedAssets)
ginServer.Handle("POST", "/api/asset/getMissingAssets", model.CheckAuth, getMissingAssets)
 
// Patched routing configuration
ginServer.Handle("POST", "/api/asset/resolveAssetPath", model.CheckAuth, model.CheckAdminRole, resolveAssetPath)
ginServer.Handle("POST", "/api/asset/getUnusedAssets", model.CheckAuth, model.CheckAdminRole, getUnusedAssets)
ginServer.Handle("POST", "/api/asset/getMissingAssets", model.CheckAuth, model.CheckAdminRole, getMissingAssets)

The implementation of model.CheckAdminRole intercepts incoming requests, extracts the associated context variables mapped in Gin (model.RoleContextKey), and guarantees that only clients with verified administrative roles are allowed to access the route. If the context contains a lower privilege tier like model.RoleReader, the middleware stops further execution and responds with a 403 Forbidden status.

To ensure this regression is permanently blocked, the developer implemented a unit test file kernel/api/asset_authorization_test.go. The test artificially assigns the RoleReader permission context to the requests and verifies that invoking any of the three endpoints yields a strict 403 status:

func TestAssetAdminEndpointsRejectReader(t *testing.T) {
	gin.SetMode(gin.TestMode)
	engine := gin.New()
	engine.Use(func(c *gin.Context) {
		c.Set(model.RoleContextKey, model.RoleReader)
		c.Next()
	})
	ServeAPI(engine)
	tests := []struct {
		path string
		body string
	}{
		{path: "/api/asset/resolveAssetPath", body: `{"path":"assets/test.png"}`},
		{path: "/api/asset/getUnusedAssets", body: `{}`},
		{path: "/api/asset/getMissingAssets", body: `{}`},
	}
	for _, test := range tests {
		t.Run(test.path, func(t *testing.T) {
			recorder := httptest.NewRecorder()
			request := httptest.NewRequest(http.MethodPost, test.path, strings.NewReader(test.body))
			request.Header.Set("Content-Type", "application/json")
			engine.ServeHTTP(recorder, request)
			if recorder.Code != http.StatusForbidden {
				t.Fatalf("reader request returned status %d: %s", recorder.Code, recorder.Body.String())
			}
		})
	}
}

Exploitation Methodology

To exploit this vulnerability, an attacker first locates a public-facing SiYuan Note application instance with Publish Mode enabled. By viewing any accessible page, the attacker inspects the DOM or source elements to identify valid relative asset paths utilized by the server. These paths are commonly formatted as assets/image-<timestamp>.png.

Using these relative assets, the attacker constructs an HTTP POST request targeted at /api/asset/resolveAssetPath. The request body contains the target relative path wrapped in JSON:

POST /api/asset/resolveAssetPath HTTP/1.1
Host: target-siyuan.example.com
Content-Type: application/json
Connection: close
 
{
  "path": "assets/image-20260724.png"
}

Upon receiving the request, the unpatched server resolves the filesystem path using local working directories and transmits the raw path back to the sender:

HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
 
{
  "code": 0,
  "msg": "",
  "data": "/home/siyuan_user/.siyuan/data/assets/image-20260724.png"
}

This response reveals the operating system flavor, the path structures of the deployment, and the username siyuan_user. This harvested structural intelligence can then be used to construct more precise paths for directory traversal or server-side file-inclusion exploits in adjacent components.

Impact Assessment

The direct impact of CVE-2026-72802 is low-to-moderate information disclosure. While it does not directly permit remote code execution, database modification, or denial of service, it removes a critical layer of defense-in-depth.

By disclosing the absolute backend paths, an attacker gains exact structural maps of the server. Knowing the path /home/siyuan_user/.siyuan/data/... allows the attacker to learn the local username and verify directory patterns. On Windows servers, this may leak drive letters and system path names, highlighting specific administrative directory trees.

This intelligence streamlines the creation of targeted exploits. If a secondary vulnerability (such as an arbitrary file write or local file read) is discovered, the attacker can leverage these exact absolute paths to bypass path guessing entirely, making subsequent attacks highly reliable.

Mitigation and Remediation Guidance

The primary recommendation is to update the SiYuan Note instance to version v3.7.4 or higher immediately. This introduces the authorization role checking layer, preventing any low-privileged or unauthenticated sessions from invoking the asset-resolving endpoints.

If patching cannot be performed immediately, the following temporary mitigations can be implemented to minimize exposure:

  1. Disable Publish Mode: Restricting the application to single-user local setups without web publishing prevents anonymous connections from reaching the API layer.
  2. Implement Reverse Proxy Filter Rules: Configure front-end web servers (such as Nginx, Caddy, or Traefik) to actively drop requests pointing to the affected endpoints.

For example, an Nginx block can reject external traffic targeting these administrative endpoints:

location ~* /api/asset/(resolveAssetPath|getUnusedAssets|getMissingAssets) {
    return 403;
}

Official Patches

siyuan-noteGitHub Security Advisory GHSA-jv8v-xq2h-657v
siyuan-noteFix Commit: Restrict sensitive asset APIs to administrators

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

SiYuan Note

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan
siyuan-note
< 3.7.4v3.7.4
AttributeDetail
CWE IDCWE-639
Attack VectorNetwork
CVSS v4.0 Score6.9 (Medium)
CVSS v3.1 Score5.3 (Medium)
Exploit StatusNone
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1592Gather Victim Host Information
Reconnaissance
T1083File and Directory Discovery
Discovery
CWE-639
Authorization Bypass Through User-Controlled Key

The application fails to perform authorization checks when a user provides an input key to retrieve sensitive metadata or absolute target values, allowing unauthorized information access.

Vulnerability Timeline

Security patch committed directly to upstream repository.
2026-07-24
Coordinated public advisory disclosure (GHSA-jv8v-xq2h-657v).
2026-08-12
Vulnerability record analyzed and updated in NVD.
2026-08-26

References & Sources

  • [1]GitHub Security Advisory GHSA-jv8v-xq2h-657v
  • [2]VulnCheck Security Advisory
  • [3]SiYuan Note Commit eee3410aa131b76f1bd72e933d484cf1ece77e88

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

•26 minutes ago•CVE-2026-72805
6.9

CVE-2026-72805: Missing Authorization in SiYuan Note Block APIs Leads to Information Disclosure

SiYuan Note versions before v3.7.4 fail to enforce publish-access checks on several block API endpoints. This vulnerability allows anonymous readers or authorized accounts with low-privileged roles to retrieve sensitive document titles, ancestor block content snippets, reference text, and path metadata for publish-forbidden or password-protected documents by supplying target block IDs.

Alon Barad
Alon Barad
1 views•6 min read
•about 1 hour ago•CVE-2026-72804
9.2

CVE-2026-72804: Authentication Bypass and Sensitive Information Exposure in SiYuan Graph Endpoints

SiYuan before version 3.7.4 contains an authentication bypass vulnerability within its graph visualization API endpoints, allowing unauthenticated remote attackers to extract sensitive node metadata and content from password-protected documents.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-72801
8.7

CVE-2026-72801: Information Disclosure of Cryptographic Key Material in SiYuan

An access control vulnerability in the SiYuan personal knowledge management platform before version v3.7.4 exposes notebook encryption parameters to unauthenticated remote attackers. When the platform is configured in Publish Mode, specific API endpoints fail to enforce authorization checks. This access failure leaks key-derivation materials, password verifiers, and wrapped database keys to anonymous network clients.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-72800
5.8

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

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.

Alon Barad
Alon Barad
3 views•5 min read
•about 6 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
5 views•7 min read
•about 7 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
3 views•7 min read