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

CVE-2026-72808: Unauthorized PDF Annotation Access in SiYuan Knowledge Management System

Alon Barad
Alon Barad
Software Engineer

Sep 4, 2026·6 min read·7 visits

Executive Summary (TL;DR)

Unauthenticated or read-only users can bypass asset-level restrictions to retrieve sensitive PDF annotations from unpublished or password-protected documents.

An information disclosure vulnerability in the SiYuan knowledge management system versions up to and including v3.7.2 allows remote unauthorized attackers to retrieve PDF annotations via the /api/asset/getFileAnnotation endpoint due to missing authorization checks.

Vulnerability Overview

The SiYuan knowledge management system supports local and published notebook configurations. Users can upload assets, including PDF documents, and annotate them using built-in annotation features. These annotations are stored as separate .sya files. The system implements access-control policies on the root notebook assets, ensuring that unauthorized readers cannot retrieve them if the notebook is private or password-protected.

The vulnerability resides within the /api/asset/getFileAnnotation HTTP API endpoint, which is mapped inside the kernel codebase of SiYuan. This endpoint is exposed to facilitate the retrieval of annotation metadata for a specific document path. However, in vulnerable versions of the application, the endpoint only relies on generic application authentication filters rather than validating granular object-level access controls.

Consequently, an unauthenticated user (if publishing is configured without global authentication) or a read-only viewer can target this API endpoint directly. If the attacker has knowledge of or is able to guess the storage path of a private PDF document, they can fetch its annotations. This bypasses the access controls established for the underlying PDF asset.

Root Cause Analysis

The root cause of CVE-2026-72808 is a missing authorization check (CWE-862) inside the file annotation retrieval mechanism. When a request is dispatched to /api/asset/getFileAnnotation, the routing layer verifies general identity context through CheckAuth or basic middleware. Once authenticated, the execution path transfers control directly to the handler function getFileAnnotation inside kernel/api/asset.go.

Within the vulnerable implementation, the input path string is processed to locate the targeted asset file using the helper utility resolveFileAnnotationAbsPath. This function strips the .sya extension, resolves the logical path within the respective storage box, and appends the suffix back to identify the target filesystem location. The handler then checks for file existence and immediately returns the file's binary content to the client.

This design fails to perform any verification against the publish access rules associated with the primary PDF document. While access to the PDF itself via /assets/* routes is blocked by the application's core access control matrix, the annotation endpoint treats the requested resource as an isolated path. Because of this logical separation, the server serves the document's annotations without assessing if the client is permitted to view the underlying parent file.

Code Analysis

The vulnerability patch was applied in commit 509b35055940856ec1c89cb4888723c4660b776a. The core architectural change introduces multi-value returns in the path resolution handler to isolate both the asset path and the annotation path, enabling object-level authorization checking prior to file access.

// Patched Path Resolution Function in kernel/api/asset.go
func resolveFileAnnotationAbsPath(assetRelPath string) (annotationAbsPath, assetAbsPath string, err error) {
	// The .sya is at the end of the URL, e.g., assets/a.pdf?box=<id>.sya
	filePath := strings.TrimSuffix(assetRelPath, ".sya")
	assetAbsPath, err = model.GetAssetAbsPathInBox(filePath, "")
	if err != nil {
		return
	}
	annotationAbsPath = assetAbsPath + ".sya"
	return
}

In getFileAnnotation, the updated handler evaluates whether the requester is operating under a restricted read-only role using model.IsReadOnlyRoleContext(c). If this condition evaluates to true, the program retrieves the current publish configurations and issues a specific access-check function:

if model.IsReadOnlyRoleContext(c) {
	publishAccess := model.GetPublishAccess()
	if !model.CheckAbsPathAccessableByPublishAccess(c, assetAbsPath, publishAccess) {
		ret.Code = http.StatusForbidden
		ret.Msg = http.StatusText(http.StatusForbidden)
		return
	}
}

This logic enforces that unauthenticated or guest sessions must have explicit publish permissions to the parent asset file. If the access check fails, the handler halts execution and returns an HTTP 403 Forbidden status. This prevents the server from proceeding to the file-reading stage, remediating the direct access vector.

Exploitation Methodology

An attacker seeking to exploit CVE-2026-72808 must satisfy specific environment and knowledge prerequisites. The target SiYuan deployment must have active public network access or publish capabilities enabled. Furthermore, the targeted resource must reside inside a non-encrypted storage block, as the vulnerability does not allow bypassing encryption boundaries.

The primary barrier to successful exploitation is acquiring the logical asset path of the target document. Because asset filenames are typically randomized or generated programmatically during insertion, brute-forcing is the primary constraint. However, if paths are exposed through other leakage channels, or if guessing is feasible, exploitation can be initiated.

The exploit is conducted by sending an HTTP POST request directly to the API routing endpoint. Below is a conceptual representation of the structure required for an exploit payload:

POST /api/asset/getFileAnnotation HTTP/1.1
Host: target-siyuan-instance:6806
Content-Type: application/json
 
{
  "path": "assets/confidential_document.pdf?box=20261024090123-abc1234.sya"
}

Upon receiving this request, a vulnerable server will process the payload, convert the path via the unpatched helper, bypass authorization checks, and return the .sya data. The returned structure contains cleartext information including highlighted document text, user-written margins, and structural metadata of the document.

Impact Assessment

The impact of CVE-2026-72808 is restricted to the unauthorized disclosure of information. It does not provide remote code execution, server-side request forgery, or administrative write access to the host server. The integrity and availability of the files remain unaffected.

Despite these limitations, the confidentiality impact can be significant for environments utilizing SiYuan for sensitive document storage. Annotations often contain direct quotes, editorial critiques, or sensitive clarifications of private legal, financial, or personal documents. The exposure of these comments effectively compromises the confidentiality boundary of the host notebook.

The vulnerability has been evaluated with a CVSS v4.0 base score of 6.9, emphasizing that the attack can be launched over the network with low complexity and no user interaction. The EPSS score is currently low, indicating that widespread automated exploitation is unlikely due to the requirement of knowing the asset paths beforehand.

Detection & Remediation

Detection of exploit attempts requires reviewing proxy and application access logs. Administrators should analyze incoming traffic for unexpected POST requests directed at /api/asset/getFileAnnotation. High frequencies of these requests from unauthenticated or read-only source IP addresses represent potential path-guessing or scanning activity.

The recommended remediation is to upgrade the SiYuan application deployment to version 3.7.4 or later. This introduces the authorization check in the API handler.

If immediate patching is not possible, defensive mitigations can be applied at the network or reverse proxy layer. Administrators can write rules in Nginx, Cloudflare, or local web application firewalls (WAF) to block requests to /api/asset/getFileAnnotation originating from untrusted networks:

# Nginx block to restrict the file annotation endpoint
location /api/asset/getFileAnnotation {
    allow 127.0.0.1;
    allow 192.168.1.0/24;
    deny all;
}

Additionally, organizations should avoid storing highly confidential information in unencrypted notebooks. Utilizing SiYuan's native encrypted box feature ensures that data remains protected even if direct filesystem-level retrieval vulnerabilities are discovered.

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:L/SI:N/SA:N
EPSS Probability
0.28%
Top 80% most exploited

Affected Systems

SiYuan

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan
siyuan-note
<= v3.7.2v3.7.4
AttributeDetail
CWE IDCWE-862 (Missing Authorization)
Attack VectorNetwork
CVSS v4.0 Score6.9 (Medium)
EPSS Score0.00283 (Percentile: 20.46%)
ImpactInformation Disclosure (Access to PDF Annotations)
Exploit StatusNo public functional exploit
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

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

References & Sources

  • [1]GitHub Security Advisory (GHSA-v7ph-r5r6-4jcj)
  • [2]GitHub Commit 509b350
  • [3]VulnCheck Security Advisory

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

•17 minutes ago•CVE-2026-72811
10.0

CVE-2026-72811: Remote SQL Injection in SiYuan Backlink and Mention Search Engine

A critical SQL Injection vulnerability exists in the SiYuan note-taking application (versions <= v3.7.2) due to improper neutralization of single quotes within the backlink and mention search queries. Because the application constructs SQLite Full Text Search (FTS) queries via direct string concatenation and uses a database driver that supports stacked query statements, remote unauthenticated attackers can execute arbitrary SQL commands on the master database, compromising all hosted notebooks. This issue has been fully remediated in version v3.7.4.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 1 hour ago•CVE-2026-72810
8.6

CVE-2026-72810: Publish-Boundary Bypass and Real-Time Data Leakage via WebSocket Session Pollution in SiYuan

CVE-2026-72810 is a critical publish-boundary bypass vulnerability in the SiYuan personal knowledge management system before version 3.7.4. The flaw lies in the backend real-time WebSocket broadcast mechanism. When configured in public publish mode, the system fails to differentiate between unauthenticated public reader sessions and authorized administrative sessions within its global connection pool. This architectural oversight allows unauthenticated remote attackers connecting to the public WebSocket endpoint on port 6808 to passively receive real-time, raw workspace modification events, including keystroke logs, block updates, and content from protected or forbidden documents.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 2 hours ago•CVE-2026-72809
8.0

CVE-2026-72809: Authentication Bypass in SiYuan via Localhost Trust Spoofing

An authentication bypass vulnerability exists in the SiYuan personal knowledge management system (versions <= v3.7.2). The flaw occurs because the kernel's authorization validation handler trusts loopback connection origins blindly, allowing remote network attackers to gain administrative privileges via an exposed local reverse proxy.

Alon Barad
Alon Barad
3 views•6 min read
•about 4 hours ago•CVE-2026-72807
8.8

CVE-2026-72807: Second-Order SQL Injection via Attribute View Templates in SiYuan

CVE-2026-72807 is a second-order SQL injection vulnerability in SiYuan versions prior to v3.7.4. It resides in the dynamic evaluation of Attribute View (AV) template columns, which expose unsafe template functions. An attacker can exploit this by distributing a malicious SiYuan package that executes arbitrary SQL queries on the victim's local database.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 5 hours ago•CVE-2026-72806
5.8

CVE-2026-72806: Missing Authorization in SiYuan Attribute View Rendering Leads to Information Disclosure

An authorization bypass vulnerability in SiYuan prior to v3.7.4 allows unauthenticated remote attackers to access rows, block IDs, and custom attributes of password-protected documents via the attribute view rendering endpoint.

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