Skip to main content

SiYuan Note EUVDEUVD-2026-97611

| CVE-2026-109309 MEDIUM
Path Traversal (CWE-22)
2026-10-12 VulnCheck GHSA-g3cr-c99q-2hfc
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Publish malicious SiYuan kernel plugin
  2. Delivery
    Victim installs and loads plugin
  3. Exploit
    Plugin returns absolute ResponseFile.Path outside workspace
  4. Execution
    Kernel serves file via gin Context.File
  5. Impact
    Exfiltrate API token and conf.json

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the victim to install and load an attacker-supplied malicious SiYuan kernel plugin; there is no exploitation against a default install without such a plugin. Given a malicious plugin, its private HTTP server sets the plugin handler's ResponseFile.Path to an absolute path pointing outside the SiYuan workspace, which the unpatched kernel passes directly to gin's Context.File/FileAttachment without workspace-boundary validation, disclosing any file readable by the SiYuan process (notably the API token and conf.json). The key limiting factor is the required user action of trusting and installing an untrusted third-party plugin; the patched version rejects paths that resolve outside util.WorkspaceDir and returns 404 to prevent probing.

Impact

The CVSS 4.0 base score of 6.9 (Medium) and the PR:N (no privileges) metric superficially suggest an unauthenticated network-exploitable flaw, but this is misleading: the vector sets UI:A (active user interaction), reflecting the description's hard precondition that an attacker must get a victim to install and run a malicious kernel plugin. Technical impact is high and narrow - VC:H with VI:N/VA:N means confidentiality-only arbitrary file read (including the SiYuan API token and conf.json, which can enable subsequent full-API compromise), with no integrity or availability impact. No EPSS score, KEV listing, or public POC was provided in the intelligence set, so there is no evidence of active or automatable exploitation; the flaw is not mass-scannable because it requires the plugin-installation step rather than a direct unauthenticated request. Net assessment: a genuinely impactful bug for users who install untrusted third-party plugins, but a lower real-world priority than the network vector alone implies - realistic risk is gated by social engineering, not by raw CVSS.

Exploit ScenarioDerived

An attacker publishes a seemingly legitimate SiYuan kernel plugin and convinces a target to install it. Once loaded, the plugin's private HTTP server returns a ResponseFile.Path pointing to an absolute path outside the workspace (e.g. the API token file or conf.json), which the kernel serves verbatim via gin's Context.File, letting the attacker-controlled plugin read and exfiltrate any file readable by the SiYuan process. No public exploit identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 12, 2026

Absolute path traversal in the SiYuan kernel's private plugin HTTP server (SiYuan 3.7.0 through 3.8.5) allows an attacker-supplied kernel plugin to read any file readable by the SiYuan process, including the API token and conf.json, by returning an absolute path in its handler's ResponseFile.Path that the kernel passes unvalidated to gin's Context.File. The plugin's private endpoint requires no authentication or privileges to reach (PR:N), but the CVSS 4.0 vector carries UI:A and our assessment confirms the decisive precondition is user action: a victim must install and load a malicious third-party kernel plugin, so a default installation is not exposed on its own. No public exploit identified at time of analysis and the issue is not in CISA KEV; vendor-released patch is SiYuan 3.8.6, which rejects any path resolving outside the workspace.

RemediationAI

Upgrade to SiYuan 3.8.6 or later, which is the vendor-released patch (upstream fix commit c6494375ea40ee973f430f0e85d50f1862a30d81); the patched code confines plugin file responses to util.WorkspaceDir, resolves symlinks and junctions before checking containment, and returns 404 for both out-of-workspace and missing files so plugins cannot probe for external paths. Until the upgrade can be applied, the effective compensating control is supply-chain discipline: do not install or enable third-party kernel plugins from untrusted sources, and review plugin source for kernel plugin handlers that set ResponseFile.Path or otherwise let the plugin choose a server-side file path, since the vulnerability cannot be triggered against a default install without such a plugin. Because the exploited server is local to the kernel, reducing exposure also helps but has trade-offs: bind the SiYuan kernel HTTP service to localhost or block remote access to the plugin private routes at the reverse proxy or firewall, accepting that this breaks legitimate remote/browser access to SiYuan and to plugins that rely on their private endpoints. If exploitation is suspected, treat the workspace's API token and conf.json as compromised, rotate the API token and any secrets stored in conf.json, and review logs for the patched build's warning message "Rejected file response path ... outside the workspace". Advisory references: https://github.com/siyuan-note/siyuan/security/advisories/GHSA-phmw-4rgv-r4xv, the fix commit at https://github.com/siyuan-note/siyuan/commit/c6494375ea40ee973f430f0e85d50f1862a30d81, and https://www.vulncheck.com/advisories/siyuan-3.7.0-before-3.8.6-arbitrary-file-read-via-plugin-responsefile-path.

Affected VersionsENISA

SiYuan 3.7.0 <3.8.6

Affected Packages

euvd siyuan fix: 3.8.6

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

SiYuan is a Go-based personal knowledge-management application whose kernel exposes an HTTP API built on the gin framework. Alongside the administrator API, the kernel runs a private HTTP service for kernel plugins, routed roughly as /plugin/private/:name/*path, whose handler returns an HttpResponse containing a ResponseFile struct with a Path and Name field; the documented example value is "/data/plugins/<plugin-name>/app/index.html". In vulnerable builds the path from response.Body.File.Path was handed directly to gin's Context.File (and Context.FileAttachment for downloads), with no check that it stayed inside the application workspace, so a plugin could supply an absolute path such as /etc/passwd or the workspace's own conf.json and have the kernel stream the file back. This is a classic CWE-22 path traversal rooted in missing canonicalization and boundary enforcement on a caller-controlled filesystem path. The fix commit c6494375ea40ee973f430f0e85d50f1862a30d81 adds pluginServiceFileAbsPath, which trims and cleans the supplied path, defines an errPluginServiceFilePathOutsideWorkspace sentinel, accepts workspace-absolute or workspace-relative paths only when util.IsAbsPathInWorkspace passes after mounting candidates against util.WorkspaceDir, and additionally resolves symlinks and directory junctions via model.ResolveAssetPathWithMissingLeaf before confirming containment with gulu.File.IsSubPath over util.NormalizeAndResolve paths. Crucially, out-of-workspace and nonexistent files now both produce a 404 so plugins cannot use status-code differences to probe for files outside the workspace. The commit comments explicitly note the parity requirement with the administrator endpoint /api/file/getFile, which relies on the workspace boundary and grants no exemption to browser-originated plugin requests (referencing prior advisory GHSA-g7gf-v79m-jwrm). The CPE cpe:2.3:a:siyuan-note:siyuan:*:*:*:*:*:*:*:* reflects that all tracked SiYuan releases fall in the affected range reported by VulnCheck.

Know when Siyuan gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Network-reachable plugin server with no auth (PR:N) but requires the user to install a malicious plugin (UI:R); confidentiality-only arbitrary file read (C:H, I/A:N), no scope change.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

SiYuan v3.7.0 before v3.8.6 contains an absolute path traversal vulnerability in the kernel's private plugin HTTP server, which passes a kernel plugin handler's ResponseFile.Path to gin's Context.File without validation. Attackers supplying a malicious kernel plugin can return an absolute path to read any file readable by the SiYuan process, including the API token and conf.json.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche open-source personal note-taking app, minimal enterprise footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Siyuan

View all
CVE-2026-69083 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan's fullTextSearchAssetContent endpoint lets unauthenticated attackers and holders of publish Role

CVE-2026-54067 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan personal knowledge management before 3.7.0 lets an attacker with write access to a

CVE-2026-69084 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements

CVE-2026-54158 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan's attribute-view (database) cell renderer, affecting all versions prior to 3.7.0,

CVE-2026-69085 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge-management software (all versions before v3.7.3) lets attackers inject arbitr

CVE-2024-53507 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability was discovered in Siyuan 3.1.11 in /getHistoryItems. Rated critical severity (CVSS 9.8), t

CVE-2024-53506 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the ids array parameter in /batchGetBlockAttrs. R

CVE-2024-53505 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the id parameter at /getAssetContent. Rated criti

CVE-2024-53504 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the notebook parameter in /searchHistory. Rated c

CVE-2026-23852 CRITICAL POC
9.6 Jan 19

SiYuan personal knowledge management system prior to 3.5.4 has a stored XSS vulnerability (CVSS 9.6) that allows code ex

CVE-2026-56397 CRITICAL POC
9.4 Jun 21

Remote code execution in SiYuan note-taking application (before v3.6.1) allows any malicious Bazaar marketplace package

CVE-2026-54069 CRITICAL POC
9.2 Jun 24

Origin-validation bypass in SiYuan Note (open-source personal knowledge management) before 3.7.0 lets any installed Chro

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy