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

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

Alon Barad
Alon Barad
Software Engineer

Sep 4, 2026·7 min read·44 visits

Executive Summary (TL;DR)

An unauthenticated remote attacker can bypass password-protection policies on SiYuan documents by querying database attribute views, leading to sensitive data exposure.

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.

Vulnerability Overview

SiYuan is an open-source personal knowledge management platform that features dynamic database and attribute views, including tables, kanban boards, and gallery layouts. To support collaboration and sharing, the platform includes a 'Publish Mode' which allows document owners to expose specific spaces or documents to external readers. Within this model, administrators can assign protection tiers to restrict access, such as assigning a password-protected tier to confidential documents.

However, a critical security boundary flaw exists in how these views interact with document-level permissions. When an external reader queries a published database view, the platform is designed to filter out any content belonging to unauthorized or restricted pages. Under CVE-2026-72806, the component tasked with executing this filtering logic failed to evaluate and enforce password-protection policies.

As a consequence, unauthenticated network attackers can interact with backend rendering routes to pull sensitive database items. By querying these exposed endpoints, an attacker can extract valuable database schema rows, block identifiers, titles, and custom column attributes linked to password-protected files. The vulnerability lies within the logic of FilterViewByPublishAccess inside the kernel model, creating a direct pathway to unauthorized information disclosure.

Root Cause Analysis

The root cause of CVE-2026-72806 is localized to the FilterViewByPublishAccess function inside the kernel/model/publish_access.go file. The primary purpose of this function is to iterate over database layouts—specifically Table, Gallery, and Kanban views—and filter out items that the unauthenticated user should not see. It attempts to enforce the configuration rules determined by the system's publish access policy.

In vulnerable versions of the application, the filtering logic only verified if a document path was explicitly excluded via the publish-ignore mechanism. This check was performed using the CheckPathAccessableByPublishIgnore helper function. If a document did not belong to the explicit ignore list, the system presumed it was fully accessible, ignoring the secondary security checks governing password-protected documents.

This design created a logic gap because password restrictions are handled independently from publish-ignore lists. When a document is protected by a password, its parent or child block trees still reside in memory and can be accessed via attribute views. Because the backend loops for Table, Gallery, and Kanban structures did not interface with the password validation module, the server would marshal the protected rows into JSON and return them to the client.

Code Analysis

An analysis of the vulnerable source code highlights the custom iteration and insecure validation logic. Each database layout type had a dedicated loop that parsed metadata and constructed the response dataset manually. Below is an excerpt of the vulnerable table layout filtering loop:

for _, row := range table.Rows {
    var bt *treenode.BlockTree
    if len(row.Cells) > 0 {
        if row.Cells[0].Value.Block != nil {
            id := row.Cells[0].Value.Block.ID
            if id != "" {
                bt = treenode.GetBlockTree(id)
            }
        }
    }
    if bt != nil {
        // Vulnerable: Only evaluates ignore-lists, missing password checks
        if !CheckPathAccessableByPublishIgnore(bt.BoxID, bt.Path, publishIgnore) {
            row = nil
        }
    }
    if row != nil {
        filteredRows = append(filteredRows, row)
    }
}

To resolve this vulnerability, developers removed the redundant, manual checking logic within each layout block in commit 768427f20f13bbd8dc4effa8aa4e1d09a7741bf4. It was replaced with a call to a unified helper function named checkAttributeViewItemAccessableByPublishAccess. The patched logic redirects the block validation to the centralized security evaluator:

func checkAttributeViewItemAccessableByPublishAccess(c *gin.Context, publishAccess PublishAccess, item av.Item) bool {
    if nil == item {
        return false
    }
    blockValue := item.GetBlockValue()
    if nil == blockValue || blockValue.IsDetached || nil == blockValue.Block || "" == blockValue.Block.ID {
        return true
    }
    // Centralized validator enforcing path ignores AND password restrictions
    return CheckBlockIdAccessableByPublishAccess(c, publishAccess, blockValue.Block.ID)
}

This modification ensures that the core CheckBlockIdAccessableByPublishAccess utility evaluates whether the request context has been authorized with the necessary password credentials before allowing the data to be returned.

Exploitation Methodology

Exploiting CVE-2026-72806 does not require prior administrative or user-level authentication. The attack takes place entirely over HTTP/S and can be completed by any network-adjacent or remote unauthenticated user. The target application must have public 'Publish Mode' enabled with a database view containing entries linked to password-protected documents.

An attacker begins the exploit sequence by locating a public SiYuan instance and mapping its rendered components. Instead of interacting with the frontend web interface, the attacker sends a crafted API request directly to the backend database rendering endpoint. For example, an HTTP POST request targeting /api/av/renderAttributeView can be sent with parameters referencing the target view identifier.

When the backend processes the request, the flawed FilterViewByPublishAccess module parses the view contents. Because the verification routine only removes elements matching explicit ignore paths, it leaves items that require password validation untouched. The backend generates a complete JSON response containing the properties, titles, block IDs, and custom attributes of the password-protected pages.

Impact Assessment

The impact of CVE-2026-72806 is classified primarily as a loss of confidentiality. Because SiYuan serves as a personal and enterprise knowledge repository, databases often contain sensitive intellectual property, operational logs, personal credentials, and client tracking details. Exposing database properties of password-protected documents defeats the core authorization control of the system.

While the vulnerability does not directly permit arbitrary code execution or data modification, the metadata disclosure is highly critical. Exposed data elements include precise block identifiers, primary document titles, and schema attributes such as text fields, select dropdowns, custom dates, and attached file paths. In many database setups, the attributes themselves hold the bulk of the actual content, rendering the password protection on the sub-document effectively useless.

From a risk perspective, this vulnerability has a CVSS v3.1 score of 5.8 (Medium) and a CVSS v4.0 score of 6.9. The changed scope parameter in CVSS v3.1 reflects how a failure in the rendering mechanism directly compromises the access controls of underlying linked document resources. Because the exploitation requirements are minimal, organizations exposing SiYuan instances to the public internet face a heightened risk of targeted reconnaissance and data scraping.

Remediation & Mitigation

The definitive remediation for CVE-2026-72806 is upgrading the SiYuan application to version v3.7.4 or higher. The official security patch modifies the core kernel logic, ensuring that all database views leverage the unified validation utility. This change successfully prevents unauthenticated API callers from receiving sensitive database properties without supplying valid password verification tokens.

If upgrading immediately is not feasible, administrators should apply defensive network mitigations. Restricting access to the SiYuan container or server via IP address whitelisting or establishing a Virtual Private Network (VPN) requirement drastically limits the attack surface. Disabling 'Publish Mode' entirely in the application configuration will also mitigate the risk by cutting off public exposure to the rendering routes.

For instances where public access is necessary, administrators should audit published database views. Ensure that sensitive rows pointing to password-protected pages are either manually removed from published database objects or explicitly placed on the publish-ignore list. Because the ignore list check is evaluated correctly by vulnerable code versions, placing these elements on the ignore list will successfully hide them from unauthenticated readers.

Official Patches

siyuan-noteOfficial fix commit implementing unified access evaluation helper.

Fix Analysis (1)

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.31%
Top 77% most exploited

Affected Systems

SiYuan personal knowledge management platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan
siyuan-note
< v3.7.4v3.7.4
AttributeDetail
CWE IDCWE-862
Attack VectorNetwork
CVSS v3.1 Score5.8 (Medium)
EPSS Score0.00307
ImpactInformation Disclosure
Exploit StatusPoC Available
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, allowing the actor to bypass the intended security policy.

Known Exploits & Detection

GitHub Security AdvisoryOfficial advisory with details of the authorization bypass.

Vulnerability Timeline

Security patch authored and committed to GitHub repository.
2026-07-23
CVE-2026-72806 formally published to the CVE.org / NVD registry.
2026-08-12

References & Sources

  • [1]GitHub Security Advisory GHSA-6mcf-g667-w3qv
  • [2]SiYuan Fix Commit 768427f20f13bbd8dc4effa8aa4e1d09a7741bf4
  • [3]VulnCheck Advisory: SiYuan Authentication Bypass via Attribute View
  • [4]CVE Record: CVE-2026-72806

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

•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
30 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
18 views•6 min read
•9 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
17 views•5 min read
•9 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
23 views•6 min read
•9 days ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
20 views•5 min read
•12 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
23 views•5 min read