SiYuan's new `/api/av/getAttributeViewFieldViews` endpoint only checks that a caller is authenticated, not that they're authorized to see the specific database being queried, so any publish-mode reader who can obtain a database's `avID`/`keyID` from one published view can enumerate every other view in that database, including names, layout types, and which fields the author chose to hide. This is a pre-release bug on the `v3.7.4-alpha.1` development branch, not a shipped stable version — no production SiYuan instance is affected today, and the vendor already has a patch commit (`64c26e74bb82`) merged. There's no CISA KEV listing, no public exploit, no EPSS score, and exploitation requires a reader-accessible document with a partially-published database, which narrows real-world blast radius considerably. Given the confidentiality-only impact (CVSS 5.8, no integrity/availability effect) and pre-release status, this is a low-urgency tracking item rather than an alert: confirm any SiYuan deployment is pinned to a released version prior to `v3.7.4-alpha.1`, and if testing pre-release builds, upgrade past the patched commit before exposing publish mode externally.
What is the risk?
Low-to-moderate risk in practice despite the CVSS 5.8 (medium) base score. The vulnerability is confidentiality-only (C:L/I:N/A:N) — no code execution, no data modification, no service disruption. Exploitability is trivial for someone who already has reader access to a partially-published database (a single unauthenticated or low-privilege POST request with no rate limiting or anomaly-prone payload), but the precondition — a reader-accessible document embedding a database that has both published and unpublished views — meaningfully narrows the exposed population. Crucially, this only affects the `v3.7.4-alpha.1` development build; no released stable version ships the vulnerable code path, so current production risk is effectively zero unless an organization is running pre-release SiYuan builds with publish mode enabled.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Jupyter Notebook | go | < 0.0.0-20260726004013-64c26e74bb82 | 0.0.0-20260726004013-64c26e74bb82 |
Do you use Jupyter Notebook? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step-
1) Confirm your SiYuan deployment version — if you're on any released stable version (including v3.7.3), you are not affected; no action needed. 2) If you are running the
v3.7.4-alpha.1development/nightly build, upgrade to a build that includes commit64c26e74bb82c24a73513107684b91cc01335fabor later, which gates the handler behindIsReadOnlyRoleContextand applies the sameFilterBlockAttributeViewKeysByPublishAccesscheck used by its sibling endpointgetAttributeViewKeys. 3) As an interim workaround on affected pre-release builds, disable Publish mode (Publish.Auth.Enable) or avoid publishing documents that embed databases with unpublished views. 4) Detection: monitor for repeated/automated POST requests to/api/av/getAttributeViewFieldViewswith varyingkeyIDvalues from the same publish-reader session, which would indicate enumeration attempts. 5) No credential rotation or data-breach response is warranted given the confidentiality-only, view-metadata-only nature of the leak.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is GHSA-57v5-wqx3-cgj4?
SiYuan's new `/api/av/getAttributeViewFieldViews` endpoint only checks that a caller is authenticated, not that they're authorized to see the specific database being queried, so any publish-mode reader who can obtain a database's `avID`/`keyID` from one published view can enumerate every other view in that database, including names, layout types, and which fields the author chose to hide. This is a pre-release bug on the `v3.7.4-alpha.1` development branch, not a shipped stable version — no production SiYuan instance is affected today, and the vendor already has a patch commit (`64c26e74bb82`) merged. There's no CISA KEV listing, no public exploit, no EPSS score, and exploitation requires a reader-accessible document with a partially-published database, which narrows real-world blast radius considerably. Given the confidentiality-only impact (CVSS 5.8, no integrity/availability effect) and pre-release status, this is a low-urgency tracking item rather than an alert: confirm any SiYuan deployment is pinned to a released version prior to `v3.7.4-alpha.1`, and if testing pre-release builds, upgrade past the patched commit before exposing publish mode externally.
Is GHSA-57v5-wqx3-cgj4 actively exploited?
No confirmed active exploitation of GHSA-57v5-wqx3-cgj4 has been reported, but organizations should still patch proactively.
How to fix GHSA-57v5-wqx3-cgj4?
1) Confirm your SiYuan deployment version — if you're on any released stable version (including v3.7.3), you are not affected; no action needed. 2) If you are running the `v3.7.4-alpha.1` development/nightly build, upgrade to a build that includes commit `64c26e74bb82c24a73513107684b91cc01335fab` or later, which gates the handler behind `IsReadOnlyRoleContext` and applies the same `FilterBlockAttributeViewKeysByPublishAccess` check used by its sibling endpoint `getAttributeViewKeys`. 3) As an interim workaround on affected pre-release builds, disable Publish mode (`Publish.Auth.Enable`) or avoid publishing documents that embed databases with unpublished views. 4) Detection: monitor for repeated/automated POST requests to `/api/av/getAttributeViewFieldViews` with varying `keyID` values from the same publish-reader session, which would indicate enumeration attempts. 5) No credential rotation or data-breach response is warranted given the confidentiality-only, view-metadata-only nature of the leak.
What systems are affected by GHSA-57v5-wqx3-cgj4?
This vulnerability affects the following AI/ML architecture patterns: structured note/database publishing systems, self-hosted knowledge management tools.
What is the CVSS score for GHSA-57v5-wqx3-cgj4?
GHSA-57v5-wqx3-cgj4 has a CVSS v3.1 base score of 5.8 (MEDIUM).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0036 Data from Information Repositories Compliance Controls Affected
What are the technical details?
Original Advisory
### Scope note (please read first) This endpoint does not exist in v3.7.3 or on master. It was introduced on the development branch by commit `acfc02ee8` ("Improve database field visibility across views", #11020) and is live on `v3.7.4-alpha.1`, so it will ship in v3.7.4 unless gated first. No released stable version is affected. ### Summary `/api/av/getAttributeViewFieldViews` is registered with `CheckAuth` only and applies no publish-access filtering. Given a database `avID`, it returns the complete view structure of that database: every view's name, icon, layout type and the per-field `Hidden` flag, regardless of whether the caller is authorized to see that database or those views. The route registered immediately before it, `getAttributeViewKeys`, does gate reader roles. ### Details | Item | Detail | |---|---| | Route | `kernel/api/router.go:530` `POST /api/av/getAttributeViewFieldViews` → `model.CheckAuth` → `getAttributeViewFieldViews` | | Middleware | `CheckAuth` only, no `CheckReadonly`, no `CheckAdminRole` | | Guard in handler | None. Greps for `IsReadOnlyRoleContext`, `publishAccess` and `Filter*` all return zero matches | | Exposed | For each entry in `attrView.Views`: `ID`, `Icon`, `Name`, `Type`, and the `Hidden` flag for the requested field | | Introduced by | `acfc02ee8` (feature), dev branch only | **The leak path.** The handler binds `avID` and `keyID`, validating them against the ID pattern only, then calls `GetAttributeViewFieldViews(avID, keyID)`. That function calls `av.ParseAttributeView(avID)`, which reads the database's storage file directly by identifier. There is no ownership check and no publish-access check anywhere on the path. The result is a per-view record for every view the database defines. What a reader learns is author-written: view names are typed by the user, and layout type distinguishes a table from a gallery or kanban. The `Hidden` flag additionally reveals, per view, which fields the author chose to conceal. **Guarded sibling, one route earlier.** `getAttributeViewKeys` (`kernel/api/router.go:529`) is also reader-reachable and does gate: ```go if model.IsReadOnlyRoleContext(c) { blockAttributeViewKeys = model.FilterBlockAttributeViewKeysByPublishAccess(c, publishAccess, ...) } ``` The new route at 530 applies nothing equivalent. This is worth flagging as more than an isolated omission. `acfc02ee8` added a new reader-reachable attribute-view endpoint during the same development cycle in which the surrounding attribute-view endpoints were being hardened. The same pattern produced an earlier exposure: `f2d966659`, which added encrypted-notebook unlock status for plugin consumption, created a reader-reachable disclosure on a surface that was otherwise being tightened. A check on new reader-reachable routes against the gating applied to their registered neighbours would catch this class before release. **Reachability, stated honestly.** The endpoint requires a valid `avID` and `keyID`. `renderAttributeView` supplies both to a reader for any database embedded in a document the reader can access. The realistic target is therefore a partially-published database: the document publishes one view, and this endpoint enumerates the existence, name, layout type and hidden-field configuration of the database's other views, including views the author did not publish. Against a database with no reader-accessible surface at all, obtaining the identifiers is harder, particularly since the `getAttributeViewKeysByID` enumeration path was closed on the development branch. The severity below reflects that constraint rather than a worst case. ### Proof of Concept Precondition: `v3.7.4-alpha.1` build, publish mode enabled (default port 6808), anonymous when `Publish.Auth.Enable` is `false`, otherwise any publish reader account. A database embedded in a reader-accessible document, with at least one additional view that is not published. Step 1, obtain the identifiers through the reader-accessible path: ``` POST http://127.0.0.1:6808/api/av/renderAttributeView {"id":"<block id of the embedded database in a published doc>"} → 200, returns the published view together with its key identifiers ``` Step 2, enumerate the rest of the database's views: ``` POST http://127.0.0.1:6808/api/av/getAttributeViewFieldViews {"avID":"<avID from step 1>","keyID":"<keyID from step 1>"} → 200, returns a record per view: ID, Icon, Name, Type, Hidden ``` The response includes views that were never published, disclosing their author-written names, their layout types, and which field is hidden in each. ### Impact An anonymous reader in publish mode, or any publish `RoleReader`, can enumerate the full view structure of a database when only part of that database is published. View names are author-written free text and frequently describe the data they filter, so this discloses the existence and subject matter of unpublished views. The per-field `Hidden` flags additionally reveal the author's concealment choices across those views. Confidentiality only, with no integrity or availability impact, and bounded by the reader needing identifiers obtainable from a reader-accessible database. ### Suggested fix Gate the handler for read-only roles, mirroring `getAttributeViewKeys`: when `IsReadOnlyRoleContext(c)` holds, resolve the block that owns the `avID` and apply the publish-access check before returning any view record, or filter the returned set through the same `FilterBlockAttributeViewKeysByPublishAccess` path its neighbour uses.
Exploitation Scenario
An organization runs a pre-release SiYuan build (`v3.7.4-alpha.1`) in publish mode to share a partially-published knowledge base externally — for example, a public documentation database where only a "Getting Started" view is published but internal views like "Customer Escalations" or "Pending Security Advisories" remain hidden. An anonymous visitor (or any publish-reader account) loads the published document, calls the reader-accessible `renderAttributeView` API to obtain the database's `avID` and a `keyID`, then replays those identifiers against `getAttributeViewFieldViews`. The response enumerates every view in the database — revealing the existence and names of the unpublished "Customer Escalations" and "Pending Security Advisories" views along with which fields the author marked hidden in each. No credentials are stolen and no data is modified, but the attacker now knows what topics the organization is tracking internally and which fields it considers sensitive enough to hide, informing further social-engineering or targeting decisions.
Weaknesses (CWE)
CWE-862 — Missing Authorization: The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N References
Timeline
Related Vulnerabilities
CVE-2026-72811 10.0 SiYuan: SQL injection enables cross-notebook DB access
Same package: notebook CVE-2026-69083 10.0 SiYuan: unauthenticated SQLi in full-text search endpoint
Same package: notebook CVE-2026-69084 10.0 SiYuan: SQL injection in search endpoint exposes notebooks
Same package: notebook CVE-2026-44727 9.0 jupyter-server: stored XSS yields kernel RCE
Same package: notebook CVE-2026-52798 8.9 Gogs: Stored XSS via .ipynb Markdown re-render bypass
Same package: notebook