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

CVE-2026-73605: Path Traversal and File Existence Oracle via getUniqueFilename Endpoint in SiYuan

Alon Barad
Alon Barad
Software Engineer

Oct 1, 2026·6 min read·4 visits

Executive Summary (TL;DR)

Unauthenticated remote users can verify the existence of files and folders on the host operating system by sending crafted path parameters to the SiYuan file utility endpoint, leading to sensitive host system information disclosure.

An authorization bypass and path traversal vulnerability exists in the SiYuan knowledge workspace platform. The vulnerability is located in the '/api/file/getUniqueFilename' endpoint inside the 'github.com/siyuan-note/siyuan/kernel' package. Under default configurations, this route is exposed to users who satisfy basic authentication middleware checks, which includes anonymous readers in publish mode. By supplying unvalidated absolute paths, remote attackers can verify the existence of files and directories across the host operating system, establishing a high-fidelity file existence oracle.

Vulnerability Overview

This section outlines the attack surface and core mechanism of CVE-2026-73605, a vulnerability discovered in the SiYuan personal knowledge management platform. The affected component is the github.com/siyuan-note/siyuan/kernel package, specifically within the API routing and handling logic. The vulnerability manifests as a path traversal vulnerability and a file existence oracle, allowing remote users to query the host filesystem.

The primary exposure exists in the /api/file/getUniqueFilename endpoint, which is designed to assist the frontend editor in resolving file name conflicts for assets. Under normal workspace operation, path arguments should be restricted and confined to the user’s designated workspace path (the storage directory containing the .sy note files). However, /api/file/getUniqueFilename failed to enforce workspace confinement, allowing input absolute paths to escape to the host filesystem.

An attacker can exploit this endpoint to verify the existence of files and directories across the host operating system. The vulnerability is classified under CWE-862 (Missing Authorization) and carries a CVSS v4.0 base score of 6.9, reflecting its role as a high-fidelity reconnaissance mechanism.

Root Cause Analysis

The root cause of CVE-2026-73605 resides in the lack of path sanitization and directory confinement controls within the getUniqueFilename API handler. When the frontend requests a unique filename, the application accepts a user-provided file path parameter without performing verification against the configured workspace directory. This omission allows an absolute path referencing directories outside the intended application sandbox to reach the underlying helper function.

The input processing chain begins in kernel/api/file.go inside the handler for /api/file/getUniqueFilename. The utility function util.BindJsonArg verifies that the path argument exists and is not empty, but it does not perform directory verification or normalization. Consequently, the raw path is passed directly to the util.GetUniqueFilename helper located in util/file.go.

Within the helper function, the application invokes gulu.File.IsExist using the unchecked input path. If the file or directory exists on the host operating system, the function appends an incremented numerical suffix and returns the modified path. If the file does not exist, the helper returns the original input path verbatim, establishing a binary response condition that serves as an oracle.

Code Path Walkthrough

Analyzing the application router configuration in kernel/api/router.go highlights the discrepancy in access control configurations. While file management routes like /api/file/putFile are restricted with CheckAdminRole and CheckReadonly middleware, /api/file/getUniqueFilename only implements the basic CheckAuth middleware. This setup permits users in anonymous viewing or publish modes to bypass administrative checks and interact with the file endpoint.

The handler function processes JSON arguments and maps the path key directly to the underlying utility without applying workspace boundaries:

// Vulnerable code in kernel/api/file.go
func getUniqueFilename(c *gin.Context) {
    var filePath string
    ret := gulu.Ret.NewResult()
    defer c.JSON(http.StatusOK, ret)
    
    // Parses and binds the JSON argument without restricting the path to the workspace
    if err := util.ParseJsonArgs(c, ret, util.BindJsonArg("path", &filePath, true, true)); err != nil {
        return
    }
    
    // Direct invocation of the oracle helper using the raw parameter
    ret.Data = map[string]any{"path": util.GetUniqueFilename(filePath)}
}

By contrast, secure endpoints utilize functions such as util.GetAbsPathInWorkspace to validate that input paths resolve within the strict boundaries of the designated storage directory. The omission of this verification step in /api/file/getUniqueFilename enables the path traversal condition.

Exploitation Methodology & PoC

An attacker can exploit this vulnerability by issuing HTTP POST requests containing targeted absolute paths to the /api/file/getUniqueFilename endpoint. Because the application returns different responses based on file existence, the attacker can systematically probe the host file system. This technique requires no special execution environment or timing measurements, as the server returns a distinct string modification.

For instance, an attacker probing for the existence of /etc/passwd sends a payload containing that exact absolute path. If the file is present, the server returns /etc/passwd (1) in the response JSON. If the file is absent, the server returns /etc/passwd unmodified. This predictable divergence allows high-speed automated tools to map files.

POST /api/file/getUniqueFilename HTTP/1.1
Host: target.local:6808
Content-Type: application/json
 
{
  "path": "/etc/passwd"
}

The server response for an existing file:

{
  "code": 0,
  "msg": "",
  "data": {
    "path": "/etc/passwd (1)"
  }
}

Security Impact Assessment

The primary consequence of this vulnerability is the disclosure of the host file system structure, which facilitates advanced targeted attacks. Although the oracle does not allow attackers to read file contents or write files to the server, it reveals configuration files, installed software, and system usernames. This reconnaissance capability is critical during the initial stages of an intrusion.

Attackers can verify the presence of specific software packages, configuration templates, and administrative directories, such as /var/run/docker.sock or /etc/nginx/nginx.conf. This information allows them to identify secondary vulnerabilities or misconfigurations. Furthermore, querying directories like /home/ or /Users/ reveals active system usernames, negating previous privacy mitigations.

The vulnerability also impacts the security of private notebooks. If an attacker knows or guesses the structures of workspace directories, they can verify the presence of sensitive notebook identifiers and document keys. The CVSS v3.1 score is evaluated at 5.8 with a scope change (S:C), because the sandbox escape leaks host system state information.

Remediation & Detection

Remediation requires upgrading the SiYuan application to version 3.7.4 or later, which restricts path inputs to the workspace directory. Organizations unable to apply the update immediately must implement network access controls to limit access to the workspace. Restricting the API to trusted IP addresses or disabling the public sharing and publish features mitigates the risk of exposure to external threat actors.

To detect ongoing exploitation, administrators should monitor web server and application logs for unusual request patterns targeting /api/file/getUniqueFilename. A sequence of requests containing system directories, configuration files, or absolute paths outside the workspace indicates directory scanning. Security teams can deploy web application firewall rules to detect and block absolute paths within JSON parameters to this route.

An example detection signature targeting this behavior involves searching for standard system files inside the JSON request body. Deploying Suricata or Snort rules can identify attempts to query common Linux or Windows system files through the affected endpoint.

Official Patches

SiYuanSecurity advisory containing remediation information.

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N
EPSS Probability
0.33%
Top 77% 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
Attack VectorNetwork (AV:N)
CVSS v4.0 Base Score6.9
EPSS Score0.00325 (Percentile: 23.19%)
ImpactFilesystem structure reconnaissance
Exploit StatusProof-of-Concept Available
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The product does not perform an authorization check when an actor attempts to access a resource or perform an action.

Known Exploits & Detection

GitHub Security AdvisoryExploit methodology and vulnerability overview documented in the official advisory.

Vulnerability Timeline

Vulnerability discovered and reported to vendor
2026-01-20
Vendor releases fixed version v3.7.4
2026-02-05
GitHub Security Advisory GHSA-hf8h-97gm-4x2p published
2026-02-06
CVE-2026-73605 assigned and documented
2026-02-10

References & Sources

  • [1]NVD - CVE-2026-73605
  • [2]CVE.org - CVE-2026-73605
  • [3]GitHub Security Advisory GHSA-hf8h-97gm-4x2p
  • [4]VulnCheck Advisory Portal
  • [5]SiYuan Repository

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

•about 1 hour ago•CVE-2026-102990
8.2

CVE-2026-102990: Regular Expression Denial of Service in basic-ftp Directory Parsing

A highly critical Regular Expression Denial of Service (ReDoS) vulnerability in basic-ftp, an FTP client library for Node.js. In versions prior to 6.2.1, a malicious or compromised FTP server can exploit this vulnerability to force the FTP client to consume quadratic CPU time during directory parsing. This issue blocks the single-threaded Node.js event loop, freezing the application process and leading to a complete Denial of Service (DoS).

Amit Schendel
Amit Schendel
6 views•6 min read
•about 2 hours ago•CVE-2026-102821
6.5

CVE-2026-102821: Unbounded Memory Exhaustion via CHANNEL_OPEN Flood in russh

An uncontrolled resource consumption vulnerability in the russh library allows remote authenticated attackers to exhaust server memory (heap) by flooding channel open requests during a stalled key re-exchange (rekeying) process, causing a denial of service via Out-of-Memory (OOM) termination.

Alon Barad
Alon Barad
8 views•5 min read
•about 3 hours ago•CVE-2026-102820
6.2

CVE-2026-102820: Out-of-Bounds Read and Excessive Memory Allocation in russh pageant

A critical memory handling vulnerability exists in the pageant crate, a workspace component of the Rust-based russh SSH client library, during communication with the PuTTY Pageant SSH agent on Windows systems. Prior to version 0.2.3, the library's shared memory parsing logic blindly trusted a peer-controlled, 32-bit big-endian response length field. This allows local attackers running within the same user session to trigger out-of-bounds reads or execute an out-of-memory crash of the client application.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 4 hours ago•CVE-2026-84428
7.5

CVE-2026-84428: Schema Validation Bypass in Fastify Header Normalization

A validation bypass vulnerability exists in Fastify web framework prior to version 5.12.2. The flaw stems from shallow normalization of header validation schemas, which fails to lowercase nested or conditional schema rules (like JSON Schema dependencies or dependentRequired) defined in mixed or canonical casing. Consequently, because Node.js normalizes incoming HTTP request headers to lowercase, the compiled validator fails to match these headers against the un-normalized mixed-case schema triggers, silently skipping conditional checks and allowing unauthenticated attackers to bypass authorization or security headers.

Amit Schendel
Amit Schendel
4 views•8 min read
•about 5 hours ago•CVE-2026-84469
7.5

CVE-2026-84469: Request Validation Bypass in Fastify via Loose Boolean Schema Evaluation

CVE-2026-84469 is a high-severity request validation bypass vulnerability in the Fastify Node.js web framework. In versions prior to 5.12.2, Fastify uses loose truthiness checks to decide whether to compile request schemas. When a component (such as the body) is explicitly configured with a boolean 'false' schema—which under JSON Schema Draft 7 acts as a 'deny-all' constraint—Fastify's internal logic evaluates this as a falsy value and skips compilation entirely. This allows unauthenticated remote attackers to send arbitrary payloads to these endpoints, bypassing validation checks and directly executing backend route handlers.

Alon Barad
Alon Barad
9 views•7 min read
•about 6 hours ago•CVE-2026-76169
7.5

CVE-2026-76169: Authentication Bypass and Encapsulation Violation via Malformed URL Routing Fallback in Fastify

An authentication bypass vulnerability in the Fastify web framework allows remote attackers to access private custom not-found handlers by submitting requests with malformed URLs. This bypasses the typical request lifecycle and its associated authorization hooks.

Amit Schendel
Amit Schendel
6 views•5 min read