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

CVE-2026-54069: Authentication Bypass in SiYuan Note via Origin Header Spoofing

Alon Barad
Alon Barad
Software Engineer

Jul 11, 2026·5 min read·36 visits

Executive Summary (TL;DR)

A flaw in SiYuan Note's authorization middleware permits remote and local attackers to bypass authentication entirely by presenting a crafted Origin header starting with 'chrome-extension://'.

CVE-2026-54069 is a critical authentication bypass vulnerability in the SiYuan Note personal knowledge management system. The flaw is located in the HTTP server's middleware handling API authorization, which unconditionally trusts requests carrying a 'chrome-extension://' scheme in the Origin HTTP header, granting administrative access without validating API tokens.

Vulnerability Overview

SiYuan Note is a privacy-first, open-source personal knowledge management system. It relies on a local or remote backend kernel developed in Go, which hosts an HTTP API server on port 6806 by default. This backend handles data storage, configuration management, and integration with frontends, mobile devices, and browser extensions.\n\nThe attack surface is centered on the /api/* endpoints managed by the kernel. Under normal operations, these endpoints are protected by token-based authentication via the AccessAuthCode parameter. However, to facilitate integration with web clippers and browser extensions, the authorization middleware incorporates special handling for the standard browser origin headers.

Root Cause Analysis

The root cause of CVE-2026-54069 is an origin validation error categorized as CWE-346. Within the Go backend implementation of the CheckAuth middleware, incoming requests are analyzed for authorization before processing. To permit browser-extension-initiated requests, the developers implemented an explicit rule validating the Origin HTTP header.\n\ngo\n// Conceptual representation of the vulnerable authorization check\nfunc CheckAuth(c *gin.Context) {\n origin := c.GetHeader(\"Origin\")\n \n // VULNERABLE LOGIC: Blanket prefix matching on the Origin header\n if strings.HasPrefix(origin, \"chrome-extension://\") {\n c.Set(\"role\", RoleAdministrator)\n c.Next()\n return\n }\n \n // Regular API key check follows...\n}\n\n\nThis check fails in two critical ways. First, it relies on a simplistic prefix match (strings.HasPrefix) rather than checking the extension's unique cryptographic identifier against a strict allowlist. Second, it trusts a client-supplied HTTP header (Origin) over an open TCP connection. While browsers restrict the modification of the Origin header, external tools (such as Python scripts, curl, or custom network clients) can set this header to any arbitrary value, bypassing the browser-enforced security model.

Code Path Analysis and Fix Completeness

The vulnerable code path is triggered during any incoming HTTP request to the /api/* endpoint space. The middleware inspects the request headers, extracts the Origin value, and evaluates the string prefix. If the prefix matches chrome-extension://, the middleware injects administrative privileges (RoleAdministrator) into the request context and skips further credential validation.\n\nIn version 3.7.0, the patch remediates this security flaw by removing the blanket, unauthenticated authorization of the chrome-extension:// prefix. The updated logic requires browser extensions to supply a valid API key or explicitly configured authorization token, bringing extension communications in line with standard API authentication mechanisms. This architectural change ensures that client-side headers cannot be manipulated to achieve authorization bypass over the network.

Exploitation and Attack Scenarios

Exploitation of CVE-2026-54069 can occur via two primary vectors: remote network exploitation and local cross-origin exploitation.\n\n### Remote Network Attack\nIf the SiYuan Note instance binds to 0.0.0.0 or has port 6806 exposed to the network, an unauthenticated attacker can execute administrative actions directly using command-line utility tools. For example, the following curl command retrieves the system configuration by spoofing the Origin header:\n\nbash\ncurl -X POST http://127.0.0.1:6806/api/system/getConf \\\n -H \"Origin: chrome-extension://bypass-auth\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}'\n\n\n### Local Extension / Supply Chain Attack\nOn standard desktop installations where the application binds strictly to 127.0.0.1, remote exploitation is blocked. However, a malicious or compromised browser extension running within the user's browser context can make cross-origin requests to http://127.0.0.1:6806/api/*. Since the browser automatically appends the extension's true origin (e.g., chrome-extension://[extension_id]), the vulnerable kernel trusts the request, allowing silent exfiltration of all private notes and settings.

Impact and Risk Assessment

The impact of this vulnerability is classified as critical, with a CVSS v3.1 score of 9.1 and CVSS v4.0 score of 9.2. An administrative session grants unlimited access to the API endpoints exposed by the Go kernel, leading to complete compromise of confidentiality, integrity, and availability.\n\n### Impact Matrix\n* Confidentiality: High. Attackers can read, download, and exfiltrate all stored markdown notes, passwords, configuration parameters, and files via endpoints like /api/file/getFile.\n* Integrity: High. Adversaries can inject, delete, or modify local files, notes, and preferences. This allows the insertion of stored Cross-Site Scripting (XSS) payloads which can execute when the notes are viewed in the Electron desktop wrapper, potentially resulting in complete system compromise.\n* Availability: High. Attackers can delete workspaces, alter critical paths, or modify configuration values, leading to application crashes and severe data loss.

Remediation and Defensive Controls

The definitive solution for CVE-2026-54069 is upgrading to SiYuan Note version 3.7.0 or later, which contains the authorization patch. If immediate patching is not feasible, several defensive controls must be applied to limit exposure:\n\n1. Bind to Localhost: Verify that the application kernel is configured to listen exclusively on loopback interfaces (127.0.0.1 or ::1) rather than wildcard interfaces (0.0.0.0). This prevents remote network-based exploitation.\n2. Isolate Browser Environments: Run the desktop client on systems with a restricted browser profile, ensuring no malicious or untrusted browser extensions are active that could make local cross-origin API calls.\n3. Network Filtering: Implement host-level firewall rules to drop unsolicited incoming traffic on TCP port 6806.

Technical Appendix

CVSS Score
9.1/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
EPSS Probability
0.61%
Top 55% most exploited

Affected Systems

SiYuan Note Kernel

Affected Versions Detail

Product
Affected Versions
Fixed Version
SiYuan Note
siyuan-note
< 3.7.03.7.0
AttributeDetail
CWE IDCWE-346
Attack VectorNetwork
CVSS Score9.1 (Critical)
EPSS Score0.00607
Exploit Statuspoc
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-346
Origin Validation Error

The software does not properly validate or restrict the origin of requests, allowing unauthorized entities to perform security-sensitive actions.

References & Sources

  • [1]GitHub Security Advisory GHSA-hvr9-72v2-fff3
  • [2]NVD - CVE-2026-54069

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

•27 minutes ago•CVE-2026-53653
8.7

CVE-2026-53653: Unauthenticated Denial of Service via Unbounded Image Derivative Dimensions in Grav CMS

Grav CMS prior to version 1.7.53 and 2.0.0-rc.8 is vulnerable to an unauthenticated remote denial of service (DoS) vulnerability. By supplying crafted query parameters with extremely large dimensions to image assets, remote unauthenticated attackers can force the server to allocate massive amounts of system memory, leading to kernel Out-Of-Memory (OOM) termination of web worker processes.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 1 hour ago•CVE-2026-53657
8.2

CVE-2026-53657: Privilege Escalation via Overly Permissive Unix Domain Socket in Lima Guest Agent

CVE-2026-53657 is a local privilege escalation vulnerability in Lima (lima-vm/lima) affecting versions prior to 2.1.3 when configured with the QEMU driver. The guest agent daemon, running as root, creates its communication socket `/run/lima-guestagent.sock` with world-writable permissions (0777). This allows unprivileged local users to command the agent to establish arbitrary tunnels, including to privileged local UNIX sockets (like D-Bus). Because the target daemon authenticates the incoming connection using the credentials of the root-owned guest agent (via SO_PEERCRED), unprivileged users can perform root operations, resulting in complete guest VM compromise.

Amit Schendel
Amit Schendel
2 views•9 min read
•about 2 hours ago•CVE-2026-10740
5.3

CVE-2026-10740: Denial of Service in s2n-quic CryptoStream Reassembly

An unauthenticated Denial of Service vulnerability exists in the s2n-quic library's CryptoStream reassembler due to a lack of buffer limits on out-of-order cryptographic frames. An attacker can transmit a crafted CRYPTO frame with an extremely high offset and nominal payload, forcing the receiver to execute unbounded memory allocations and causing service crashes.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 3 hours ago•CVE-2026-55153
7.1

CVE-2026-55153: JNDI Injection and Deserialization Gadget Abuse in mchange-commons-java

A JNDI Injection and Deserialization Gadget vulnerability exists in mchange-commons-java prior to version 0.6.0. The com.mchange.v2.naming.JavaBeanObjectFactory component permits arbitrary class instantiation and setter invocation, allowing attackers to perform Server-Side Request Forgery (SSRF) and remote class loading.

Alon Barad
Alon Barad
6 views•5 min read
•about 4 hours ago•GHSA-8RW6-P7M8-63JP
6.5

GHSA-8RW6-P7M8-63JP: Array Element-Level SELECT Permissions Leak in SurrealDB

SurrealDB versions supporting element-level SELECT permissions on arrays are vulnerable to a logical authorization bypass. Due to an index-shifting error during array filtration, restricted elements can skip permission checks and leak to unauthorized record users.

Alon Barad
Alon Barad
5 views•6 min read
•1 day ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
5 views•8 min read