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

CVE-2026-72798: Missing Authorization and Information Disclosure in SiYuan renderAttributeView

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 5, 2026·5 min read·1 visit

Executive Summary (TL;DR)

Missing authorization checks in SiYuan renderAttributeView allow anonymous readers to bypass database access controls and extract sensitive cell data from hidden or password-protected databases via crafted API requests.

Prior to version v3.7.4, the SiYuan personal knowledge management system contained a critical logical authorization vulnerability within its database view rendering component. The flaws allowed unauthenticated remote attackers to bypass publish-access filters on databases, exposing sensitive Relation and Rollup cell contents belonging to private or password-protected repositories.

Vulnerability Overview

SiYuan is a local-first personal knowledge management system designed to support complex databases, relation attributes, and page-publishing features. When deployed in publish mode, the server is designed to enforce access control boundaries, ensuring that anonymous web readers can only view explicitly authorized, public-facing database blocks.

Prior to version v3.7.4, the API endpoint responsible for rendering database view attributes, 'renderAttributeView', suffered from critical security flaws that compromised these access controls. Specifically, the component failed to adequately validate the authorization context when rendering row attributes and serializing nested cell relationships.

These design oversights allowed anonymous remote users to bypass publish-access boundaries. By querying public database views containing references to private tables, users could extract confidential records from hidden or password-protected databases.

Root Cause Analysis

The first security flaw stems from a fail-open logical assumption in the primary filter function 'FilterViewByPublishAccess'. To verify row-level access permissions, the system checked the block identifier stored in the first column of each row ('row.Cells[0]'). It retrieved the block tree state and verified its public availability.

If the database layout was modified or reordered such that the first column was a non-block type—such as a selection, text, relation, or rollup field—the cell did not contain a valid block ID. Consequently, the block tree lookup returned a 'nil' state, causing the access check to return true and bypass authorization checks entirely.

The second logical flaw is located in the serialization of 'Relation' and 'Rollup' database attributes. These fields do not merely store pointers to other tables; they encapsulate cached copies of structures like 'ValueRelation' and 'ValueRollup', which contain raw content from the target databases. Because the rendering process failed to recursively inspect and sanitize these complex nested structs, confidential metadata was exposed to unauthorized users.

Code Analysis

The vulnerable implementation in 'renderAttributeView' loaded data blocks without validating that the targeted relation database was accessible to the client. The fix introduces a multi-layered security boundary by integrating recursive, layout-aware validation.

Below is a simplified representation of the recursive validation loop introduced in the patch to intercept unauthorized cells:

// Patched logic evaluating layout and filtering cell values
func (filter *attributeViewPublishAccessFilter) filterViewable(attrView *av.AttributeView, viewable av.Viewable) {
    if nil == viewable {
        return
    }
 
    switch viewable.GetType() {
    case av.LayoutTypeTable:
        table := viewable.(*av.Table)
        filter.filterGroupValue(attrView, table.BaseInstance)
        for _, row := range table.Rows {
            if nil == row {
                continue
            }
            for _, cell := range row.Cells {
                if nil == cell {
                    continue
                }
                // Deeply evaluates authorization context per cell
                filter.filterBaseValue(attrView, row.ID, cell.BaseValue)
            }
        }
    }
}

When encountering relationship properties, the system now enforces a strict verification check against the target view. If authorization to the related target view is not present, the content is replaced with empty structures via the 'clearAttributeViewSensitiveValue' function:

func clearAttributeViewSensitiveValue(value *av.Value) *av.Value {
    ret := cloneAttributeViewSensitiveValue(value)
    switch value.Type {
    case av.KeyTypeRelation:
        // Clears out potentially sensitive relations
        ret.Relation = &av.ValueRelation{}
    case av.KeyTypeRollup:
        // Clears out potentially sensitive rollups
        ret.Rollup = &av.ValueRollup{}
    }
    return ret
}

This recursive approach prevents parent database views from leaking cached records belonging to restricted or password-protected datasets.

Exploitation Methodology

An attacker can exploit this vulnerability with network-level access to the SiYuan web interface. The prerequisites are minimal: the attacker must locate a published, public-access database view that contains relation fields linking to protected databases.

To retrieve unauthorized cell values, the attacker initiates a direct POST request to the '/api/av/renderAttributeView' endpoint specifying the public attribute view identifier. The request payload matches the following format:

POST /api/av/renderAttributeView HTTP/1.1
Host: target-siyuan-instance:6806
Content-Type: application/json
 
{
  "id": "public-attribute-view-id",
  "blockID": "public-block-id"
}

Because the vulnerable server fails to recursively sanitize relations, the response JSON includes the serialized 'Relation' and 'Rollup' structures containing information retrieved from the linked, protected databases. This bypasses the access controls configured on the target databases.

Additionally, if the first column layout has been reordered to a non-block type, sending a request to view that specific table bypasses all row-level authorization entirely, exposing the entire table contents to unauthenticated visitors.

The following sequence diagram outlines the data flow in an exploitation scenario:

Impact Assessment

The security impact of CVE-2026-72798 is high due to the exposure of confidential records from private repositories. The vulnerability scores 9.2 under CVSS v4.0 and 8.6 under CVSS v3.1, reflecting its critical nature.

Attackers can leverage this bypass to harvest intellectual property, access credentials, personal documentation, or internal lists that users assumed were secured behind authorization parameters or password prompts.

Because SiYuan is often used to maintain integrated personal or organizational wikis, exposing database relationship structures represents a complete breach of the confidentiality model. There is no impact on integrity or availability, as the endpoint does not process state-modifying requests.

Mitigation and Remediation

To remediate the vulnerability, administrators must update their SiYuan installations to version v3.7.4 or later. This version introduces comprehensive filtering, validating both top-level and recursive relation paths.

In environments where immediate software updates are not feasible, administrators should restrict network exposure of the SiYuan server. Ensure that port 6806 is bound exclusively to local network interfaces or positioned behind a robust reverse proxy that enforces secondary authentication layers.

Additionally, administrators can mitigate the leak vector by temporarily deleting active 'Relation' or 'Rollup' attributes that link public databases to private or sensitive repositories.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.2/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
EPSS Probability
0.26%
Top 83% most exploited

Affected Systems

SiYuan Personal Knowledge Management System

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan
Siyuan Note
< 3.7.43.7.4
AttributeDetail
CWE IDCWE-862 (Missing Authorization)
Attack VectorNetwork
CVSS v4.0 Base Score9.2 (Critical)
EPSS Score0.00256
Exploit StatusProof-of-Concept / Theoretical Analysis
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1213Data from Information Repositories
Credential Access
CWE-862
Missing Authorization

The software does not perform an authorization check when an actor attempts to access a resource or perform an action, or performs the check incorrectly, allowing access to unauthorized data.

References & Sources

  • [1]SiYuan Security Advisory GHSA-mfrj-v65r-979c
  • [2]SiYuan Fix Commit 426991d
  • [3]VulnCheck 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

•21 minutes ago•CVE-2026-72799
6.9

CVE-2026-72799: Missing Authorization in SiYuan Filetree Path-Resolution API

SiYuan before v3.7.4 fails to enforce publish-access filters on five filetree path-resolution endpoints, allowing unauthenticated attackers to reconstruct private directory layouts and map document structures.

Alon Barad
Alon Barad
0 views•7 min read
•about 2 hours ago•CVE-2026-72797
6.9

CVE-2026-72797: Missing Authorization in SiYuan Notebook Metadata Endpoint

An information disclosure vulnerability exists in SiYuan prior to v3.7.4 due to missing authorization checks on the getEncryptedNotebookStatus API endpoint, allowing unprivileged or anonymous users to enumerate protected notebooks.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 3 hours ago•CVE-2026-72794
8.6

CVE-2026-72794: Cryptographic Key Leakage and Session Forgery in SiYuan

An information disclosure vulnerability in the SiYuan application exposes the global session cookie signing key via the `/api/system/getConf` endpoint. This allows unauthenticated remote attackers or low-privileged users to forge administrative session cookies and gain unauthorized access to the application kernel.

Alon Barad
Alon Barad
5 views•6 min read
•about 4 hours ago•CVE-2026-72795
9.2

CVE-2026-72795: Missing Authorization in SiYuan Block DOM Rendering

CVE-2026-72795 is a critical missing authorization vulnerability (CWE-862) in SiYuan, a self-hosted personal knowledge platform. When configured in publish/read-only mode, the application fails to validate publish-access rules on dynamic child blocks transcluded via SQL queries. This allows anonymous external visitors to access hidden, password-protected, or forbidden note content.

Alon Barad
Alon Barad
3 views•5 min read
•about 5 hours ago•CVE-2026-72793
8.6

CVE-2026-72793: Information Disclosure and Session Forgery in SiYuan Note-Taking Application

A critical information disclosure vulnerability in the SiYuan note-taking application allows remote attackers to retrieve sensitive configurations, including cryptographic session-cookie signing keys and absolute host system directories, leading to administrative session hijacking.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 6 hours ago•CVE-2026-72792
6.9

CVE-2026-72792: Information Disclosure via Tag API Endpoint in SiYuan

SiYuan before version v3.7.4 is affected by an information disclosure vulnerability in the `/api/tag/getTag` endpoint. Under publish mode, this endpoint returns tag labels and occurrence counts from password-protected documents to unauthenticated readers, allowing them to enumerate protected vocabulary and internal metadata without providing the document's publish password.

Amit Schendel
Amit Schendel
4 views•5 min read