CVE-2026-34453
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-34453 is an incorrect authorization vulnerability in SiYuan, a personal knowledge management system, that allows unauthenticated visitors to retrieve bookmarked content from password-protected documents via the /api/bookmark/getBookmark endpoint. The vulnerability affects all SiYuan versions up to and including v3.6.1, and was patched in v3.6.2. It was first published on March 28, 2026, by the project maintainer and assigned a CVSS v3.1 base score of 7.5 (High) (GitHub Advisory, Github Advisory).

Technical details

The root cause is an incorrect authorization flaw (CWE-863) in kernel/api/bookmark.go. When the publish service handles a read-only role request, it calls model.FilterBlocksByPublishAccess(nil, publishAccess, bookmark.Blocks), passing nil as the request context. In kernel/model/publish_access.go, the FilterBlocksByPublishAccess function treats a nil context as implicitly authorized — the condition (c == nil || password == "" || CheckPublishAuthCookie(c, passwordID, password)) short-circuits on c == nil, bypassing the CheckPublishAuthCookie password validation entirely. Because the publish proxy grants anonymous visitors a RoleReader token that passes CheckAuth, any unauthenticated user can reach the vulnerable endpoint and trigger the bypass (GitHub Advisory).

Impact

An unauthenticated attacker with network access to the SiYuan publish service can read the content of any bookmarked block from documents configured as "Protected," without supplying the document password. The confidentiality guarantee of the Protected publish access level is completely broken for bookmarked content, potentially exposing sensitive notes, credentials, or proprietary information stored in those blocks. Integrity and availability are not affected, and lateral movement is not directly enabled, but the exposed content could facilitate further targeted attacks (GitHub Advisory, Github Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, consisting of a simple JavaScript fetch call to /api/bookmark/getBookmark with an empty JSON body that returns protected bookmarked content without authentication (GitHub Advisory). The EPSS score is approximately 3.8% (88th percentile), indicating a relatively elevated probability of exploitation compared to most CVEs. Nuclei detection templates for this vulnerability were added to the ProjectDiscovery nuclei-templates repository shortly after disclosure. There is no current evidence of in-the-wild exploitation or threat actor attribution, and the vulnerability is not listed in the CISA KEV catalog (Github Advisory).

Exploitation steps

  1. Reconnaissance: Identify internet-facing SiYuan instances with the publish service enabled (e.g., via Shodan or Censys searching for SiYuan-specific HTTP response headers or paths). Confirm the target is running a version ≤ 3.6.1.
  2. Access the publish service: Navigate to the SiYuan publish service URL in a browser or via a scripted HTTP client. The publish proxy will issue a RoleReader token automatically, granting access to the /api/bookmark/getBookmark endpoint without credentials.
  3. Send the exploit request: Without entering any document password, issue the following POST request to the publish service:
fetch("/api/bookmark/getBookmark", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: "{}"
})
.then(r => r.json())
.then(x => console.log(JSON.stringify(x, null, 2)));
  1. Retrieve protected content: The API response will include all bookmarked blocks across all documents, including those from documents configured as "Protected." The response contains block content, document paths, IDs, and markdown source, directly exposing the protected information without requiring the document password (GitHub Advisory).

Indicators of compromise

  • Network: Unexpected or repeated POST requests to /api/bookmark/getBookmark from unauthenticated or anonymous sessions (i.e., sessions without a valid publish-auth cookie for protected documents); requests originating from unfamiliar IP addresses or automated tools (e.g., high request rates, missing browser headers).
  • Logs: SiYuan access logs showing POST requests to /api/bookmark/getBookmark with an empty JSON body ({}) from IPs that have not previously authenticated to any protected document; absence of a publish-auth-* cookie in the request headers accompanying these calls.
  • Process/Application: Nuclei scanner activity targeting the SiYuan publish service endpoint, identifiable by characteristic User-Agent strings or request patterns associated with ProjectDiscovery tooling.

Mitigation and workarounds

Upgrade SiYuan to version 3.6.2 or later, which patches the nil context authorization bypass in FilterBlocksByPublishAccess (SiYuan Release). If immediate patching is not possible, restrict network access to the publish service using firewall rules or reverse proxy authentication to prevent unauthenticated external access. As an additional interim measure, avoid bookmarking blocks within password-protected documents until the patch is applied (Github Advisory).

Community reactions

The vulnerability was reported by security researcher ngocnn97 and acknowledged by the SiYuan maintainer (88250), who bundled the fix with several other security vulnerability patches in the v3.6.2 release (SiYuan Issue, SiYuan Release). The advisory was noted on Mastodon by @thehackerwire and briefly discussed on Bluesky, reflecting modest community awareness. ProjectDiscovery added Nuclei detection templates for this CVE to their public template repository, facilitating automated scanning (Github Advisory).

Additional resources

  • GitHub Advisory — Official security advisory with full technical details and PoC
  • Github Advisory — GitHub Advisory Database entry (GHSA-c77m-r996-jr3q)
  • SiYuan Release — v3.6.2 release notes confirming the patch
  • SiYuan Issue — Tracking issue for security vulnerability fixes in v3.6.2
  • Nuclei Templates — ProjectDiscovery Nuclei templates repository (includes detection template for CVE-2026-34453)

SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-78662HIGH7.5
  • Docker logoDocker
  • headlamp-fips
NoYesSep 02, 2026
CVE-2026-56855HIGH7.5
  • Docker logoDocker
  • argo-workflows-3.7
NoYesSep 02, 2026
CVE-2026-84642HIGH7.5
  • NixOS logoNixOS
  • cpe:2.3:a:mozilla:thunderbird
NoYesSep 01, 2026
CVE-2026-84641HIGH7.5
  • NixOS logoNixOS
  • cpe:2.3:a:mozilla:thunderbird
NoYesSep 01, 2026
CVE-2026-32773MEDIUM6.1
  • NixOS logoNixOS
  • spark
NoYesSep 02, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management