CVE-2026-69086: SiYuan path traversal in attribute-view read endpoints

CVE-2026-69086 · Severity: high · CVSS 7.7 · Published 2026-09-03

SiYuan is a popular open-source personal knowledge management application. Four API endpoints that serve attribute-view (database) data fail to properly validate user-supplied file identifiers, allowing an attacker with read-level publish access—or no authentication if auth is disabled—to escape the intended storage directory and read JSON configuration files from elsewhere in the user's workspace. This enables unauthorized disclosure of data from other notebooks or scopes that the attacker should not be able to access.

Technologies: github.com/siyuan-note/siyuan/kernel (Go), SiYuan. Vendors: Go, SiYuan.

Quick answers

Is CVE-2026-69086 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-69086 being exploited in the wild.
How severe is CVE-2026-69086?
High severity, with a CVSS score of 7.7, published 3 September 2026.
Which products and versions are affected?
github.com/siyuan-note/siyuan/kernel (Go) < 0.0.0-20260720151813-0f5a0e7c67b0, SEMVER:introduced=0,fixed=0.0.0-20260720151813-0f5a0e7c67b0; SiYuan before 0.0.0-20260720151813-0f5a0e7c67b0.
Is there a fix for CVE-2026-69086?
Yes. github.com/siyuan-note/siyuan/kernel (Go): upgrade to 0.0.0-20260720151813-0f5a0e7c67b0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-69086 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-69086?
Check whether you run github.com/siyuan-note/siyuan/kernel (Go) or SiYuan at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • github.com/siyuan-note/siyuan/kernel (Go): upgrade to 0.0.0-20260720151813-0f5a0e7c67b0 or later
    go get github.com/siyuan-note/siyuan/kernel@v0.0.0-20260720151813-0f5a0e7c67b0

Technical details

The vulnerability exists in four POST endpoints (`/api/av/renderAttributeView`, `/api/av/getAttributeViewKeysByID`, `/api/av/getAttributeViewKeys`, `/api/av/getCurrentAttrViewImages`) that construct file paths using the `filepath.Join` function with a user-controlled `id` or `avID` parameter. The application's only identifier validation—`ast.IsNodeIDPattern(avID)`—is conditionally placed on a create-branch code path and is skipped when reading existing files. Because `filepath.Join` cleans but does not reject `..` path segments, an attacker can craft an identifier like `../../other/notebook/config` to read files outside `DataDir/storage/av/`. All endpoints require only `CheckAuth` (satisfied by a `RoleReader` publish token or bypassed entirely when `Publish.Auth.Enable` is false), and the breach is limited to `.json` files due to the forced `.json` suffix, but enables reliable disclosure of attribute-view schema data and existence oracles for workspace paths.

Affected products

  • SiYuan SiYuan before 0.0.0-20260720151813-0f5a0e7c67b0

Identifiers

  • CVE-2026-69086
  • GHSA-7hm9-v7vf-7g4w
  • GO-2026-6373

Timeline

  • 2026-09-03: disclosed: Vulnerability published via GitHub Advisory Database
  • 2026-07-20: patched: Patch version 0.0.0-20260720151813-0f5a0e7c67b0 released

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.