CVE-2026-73610
Executive Summary
CVE-2026-73610 is an information-disclosure vulnerability in SiYuan, a self-hosted, local-first note-taking and knowledge-management application, affecting all versions prior to v3.7.4. An unauthenticated remote attacker, or any user granted publish-reader access, can invoke the getLocalStorage endpoint and obtain the administrator's entire local storage map, with only three keys sanitized, exposing closed-tab history, search keywords, private document identifiers, and expanded folder paths. The vulnerability carries a CVSS 3.1 base score of 5.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N), is classified under CWE-639 (Authorization Bypass Through User-Controlled Key), and currently has no verified patch, no public exploit code, and no CISA KEV listing.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
SiYuan operates as a local-first application in which the desktop client spawns an embedded web server exposing both the editor UI and a set of HTTP/RPC-style endpoints used by the browser-based interface. These endpoints are also reachable when SiYuan is deployed in a server or publish mode, where readers are granted access to selected content without full administrative privileges. The vulnerability described for CVE-2026-73610 resides in the "local storage filter" component that is meant to sanitize responses produced by the application's local storage layer before they are returned to the caller.
According to the NVD description, the filter fails at its core task: instead of sanitizing the complete set of sensitive keys held in local storage, it returns the administrator's entire storage map while only three keys are scrubbed. The affected function is reachable through the getLocalStorage endpoint. The vulnerability is mapped to CWE-639, Authorization Bypass Through User-Controlled Key, which indicates that access decisions are made on the basis of user-controllable key or identifier values rather than through a robust server-side authorization check. In this case, a caller who is able to reach getLocalStorage — whether unauthenticated or as a publish reader — appears to be able to request the storage map without an authorization gate, and the filter does not adequately restrict which storage keys are returned.
The absence of a CNA title and the sparse technical detail in the NVD description mean that the exact HTTP method, request parameters, and full URI path of getLocalStorage are not disclosed in available data. The analysis below is therefore grounded in the vulnerability class (improper authorization / insufficient output filtering on a privileged data-access endpoint) and in the explicit data types named in the description. The exposed material is notable for its sensitivity class: closed-tab history allows an attacker to reconstruct the administrator's recent session activity; search keywords reveal the queries, and therefore the topics and secrets, that the administrator has been researching; private document identifiers can be leveraged to target or directly reference documents if other access-control deficiencies exist; and expanded folder paths disclose the logical structure of the knowledge base, including project names and content organization that may itself be confidential.
The attack surface is network-exposed SiYuan instances: deployments that bind the embedded web server to a routable interface, instances fronted by reverse proxies, and publish-mode configurations where read-only readers are expected to have access to only a curated subset of content. Because the condition requires no authentication (AV:N/PR:N) and no user interaction (UI:N), any host that can reach the endpoint is a candidate for data exfiltration. The vulnerability is rated low for confidentiality impact (C:L) under CVSS, but the scope change (S:C) indicates the disclosed data belongs to a security scope outside the vulnerable component — the administrator's local storage — which raises the practical severity for privacy and credential-hygiene purposes.
Exploitation Scenarios
No public PoC, Nuclei template, or exploit code has been tracked for CVE-2026-73610 as of this writing. The following attack chain is therefore inferred from the vulnerability class and the explicit details supplied in the NVD description.
Reconnaissance / target identification. An attacker identifies SiYuan instances exposed to the internet or to an internal network. Useful fingerprints include HTTP responses containing the "SiYuan" title or HTML markers, use of the application's default web interface, and publish-mode portals that expose reader-facing functionality. The attacker may further enumerate the web application to confirm the presence of the
getLocalStorageendpoint and the application version (version checks are relevant because versions before v3.7.4 are affected).Triggering the flawed authorization check. The attacker sends an unauthenticated HTTP request directly to the
getLocalStorageendpoint. If the instance is in publish mode, the attacker can instead authenticate as (or already be) a publish reader with intended access only to curated published content. Because the application's local storage filter only sanitizes three keys, the endpoint responds with the administrator's storage map, effectively bypassing the intended key-level filtering.Payload / execution method. The exploit requires no crafted payload in the classic injection sense. The attack is purely a request/response manipulation: the request targets the vulnerable endpoint, and the server-side flaw (CWE-639-style missing authorization combined with inadequate output filtering) does the rest. The returned map is parsed as JSON, and the attacker extracts the disclosed fields — closed-tab history, search keywords, private document identifiers, and expanded folder paths — for offline analysis.
Post-exploitation impact. With the storage map in hand, the attacker can profile the administrator's usage habits, infer the content of private documents from search keywords and folder path names, and use document identifiers to attempt direct access to specific private documents. Exfiltrated data can feed further targeted attacks: credential stuffing or phishing campaigns tailored to the administrator's research topics, social engineering based on folder structure, or sale of exposed corporate secrets. Because the disclosed data is retrieved from local storage, the compromise may not produce traditional file-access logs, making the incident difficult to detect after the fact.
Impact Assessment
From a business perspective, CVE-2026-73610 enables confidentiality loss for users of SiYuan who rely on the application to store research notes, internal project documentation, credentials references, or personal data. The victim is typically an individual or organization running SiYuan as a self-hosted knowledge base, a personal productivity hub, or a collaborative publish portal. The core impact is privacy and data classification breach: closed-tab history and search keywords can reveal sensitive queries (financial, medical, legal, or security-related), while private document identifiers and expanded folder paths allow an attacker to map the entire knowledge-base structure without authentication.
The CVSS vector breaks down as follows: Attack Vector: Network (AV:N) means the flaw is remotely exploitable; Attack Complexity: Low (AC:L) means no special conditions are required; Privileges Required: None (PR:N) confirms unauthenticated exploitation; User Interaction: None (UI:N) removes reliance on victim actions; Scope: Changed (S:C) reflects that the compromised component (the endpoint/filter) impacts a different security authority (the administrator's storage); Confidentiality Impact: Low (C:L) per vendor scoring, while Integrity and Availability are unaffected (I:N/A:N). The low confidentiality subscore likely reflects the perceived value of a single storage map, but real-world impact is highly dependent on deployment: an enterprise SiYuan deployment containing privileged project data faces a materially higher confidentiality impact than the base score suggests. The EPSS score of 0.00201 (10.2% percentile of exploited CVEs) indicates a low current probability of exploitation in the wild, and the absence of a CISA KEV entry confirms no known exploitation-due-date obligation.
Detection Guidance
The getLocalStorage endpoint name is the only concrete network-level indicator available from the NVD description. The rules below therefore key on HTTP requests whose URI contains the getLocalStorage substring. Detections should consider that legitimate local requests from the desktop UI to the loopback interface are expected; rules should filter loopback source addresses where appropriate and focus on remote or publish-reader sources.
Sigma Rule
title: SiYuan getLocalStorage Endpoint Access - Potential CVE-2026-73610 Exploitation
id: 7c0f9d2e-6b3a-4d1c-9f2e-8a5b1c3d7e10
status: experimental
description: Detects HTTP requests to the SiYuan getLocalStorage endpoint, which exposes the administrator's storage map when exploited per CVE-2026-73610.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-73610
author: Valter's IT Threat Intelligence
date: 2026/01/01
logsource:
category: webserver
product: generic
detection:
selection:
cs-method:
- 'GET'
- 'POST'
c-uri|contains: 'getLocalStorage'
filter_loopback:
c-ip|cidr:
- '127.0.0.0/8'
- '::1'
condition: selection and not filter_loopback
falsepositives:
- Legitimate HTTP requests from the local SiYuan desktop client to the loopback interface
- Monitoring tools that periodically query application health endpoints if misconfigured to include the endpoint
level: high
fields:
- c-ip
- c-uri
- cs-user-agent
- sc-status
tags:
- attack.t1190
- attack.collection
- cve.2026.73610
- cwe.639
YARA Rule
rule SiYuan_GetLocalStorage_InfoDisclosure_CVE_2026_73610
{
meta:
author = "Valter's IT Threat Intelligence"
date = "2026-01-01"
description = "Detects artifacts referencing the SiYuan getLocalStorage endpoint associated with CVE-2026-73610, in HTTP captures, exfiltration scripts, or web server logs."
cve = "CVE-2026-73610"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-73610"
score = 60
strings:
$endpoint = "getLocalStorage" ascii wide nocase
$json_content = "Content-Type: application/json" ascii wide nocase
$http_req = "POST" ascii wide nocase
condition:
$endpoint and (#endpoint >= 1) and any of ($json_content, $http_req)
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"ET WEB_SPECIFIC_APPS SiYuan getLocalStorage Endpoint Access Attempt (CVE-2026-73610)"; flow:to_server,established; http.uri; content:"getLocalStorage"; nocase; classtype:attempted-recon; sid:20373610; rev:1; metadata:created_at 2026_01_01, updated_at 2026_01_01, cve CVE-2026-73610, mitre_attack_tactic TA0001, signature_severity Major;)
Elastic Detection
network where network.protocol == "http"
and http.request.uri like "*getLocalStorage*"
and not (source.ip == "127.0.0.1" or source.ip == "::1")
Alternatively, to correlate repeated probing attempts from the same host:
sequence by source.ip with maxspan=15m
[ network where network.protocol == "http" and http.request.uri like "*getLocalStorage*" ]
[ network where network.protocol == "http" and http.request.uri like "*getLocalStorage*" ]
Splunk SPL Query
index=* (sourcetype="access_combined" OR sourcetype="access_combined_wcookie" OR sourcetype="iis" OR sourcetype="zeek:http")
uri="*getLocalStorage*"
| eval threat_name="CVE-2026-73610", threat_category="information_disclosure"
| stats count min(_time) as first_seen max(_time) as last_seen by src_ip, uri, http_user_agent, status
| where not (src_ip="127.0.0.1" OR src_ip="::1")
| sort - count
| table first_seen last_seen src_ip uri http_user_agent status count threat_name threat_category
Wazuh OSSEC Rule
<group name="siyuan,web_application_attack,information_disclosure,">
<rule id="100736" level="12">
<decoded_as>web-access</decoded_as>
<match>getLocalStorage</match>
<description>SiYuan: access to getLocalStorage endpoint detected (potential CVE-2026-73610 information disclosure)</description>
<group>web_application_attack,information_disclosure,</group>
<mitre>
<id>T1190</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence for CVE-2026-73610 is 0/4 — no patch evidence exists from any tracked source, and no vendor advisory or official fix has been identified. The NVD description states the flaw affects "SiYuan before v3.7.4," which implies the fix may be introduced in v3.7.4; however, this has not been independently verified. Organizations should treat the vulnerability as unpatched until a vendor advisory officially confirms remediation.
Immediate mitigations. Restrict network access to the SiYuan web server at the network layer: do not bind the application to publicly routable interfaces unless strictly required, and place it behind an authenticated reverse proxy (e.g., mTLS or SSO) so that unauthenticated requests never reach the application. If publish mode is enabled, disable it or limit publish-reader accounts to the minimum set necessary. Deploy WAF rules that block requests whose URI contains
getLocalStorageunless they originate from trusted loopback or management sources. Monitor access logs for this endpoint and alert on any request from non-loopback source IPs.Patch/upgrade steps. Verify the current SiYuan version and compare it against v3.7.4. If a release equal to or greater than v3.7.4 is available and vendor-confirmed, upgrade all affected instances, then re-test the
getLocalStorageendpoint to confirm that only the intended (sanitized) response is returned. Until a vendor advisory is released, do not assume that upgrading alone resolves the issue; validate the behavior empirically in a test environment.Long-term hardening. Adopt a least-privilege model for self-hosted note-taking platforms: run SiYuan in an isolated VLAN or container with egress restrictions, back up the knowledge base restorably but keep backups encrypted, enable audit logging at the reverse proxy layer, and periodically review publish-mode grants. Treat search keywords and closed-tab history as sensitive data and rotate any credentials or tokens that may have been referenced in the disclosed storage map if compromise is suspected. Track the vendor's GitHub releases and commit history for an eventual fix commit, and subscribe to CVE and EPSS feeds to reassess risk as exploitation likelihood evolves. No known threat-actor campaigns or exploit-in-the-wild evidence is available at this time; the CISA KEV catalog does not currently list CVE-2026-73610.
References
- NVD — CVE-2026-73610 Detail: https://nvd.nist.gov/vuln/detail/CVE-2026-73610
- CWE-639 — Authorization Bypass Through User-Controlled Key: https://cwe.mitre.org/data/definitions/639.html
- SiYuan — official project repository (for version/release verification): https://github.com/siyuan-note/siyuan
- FIRST.org — CVSS v3.1 Calculator (vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N): https://www.first.org/cvss/calculator/3.1
- CISA Known Exploited Vulnerabilities Catalog (CVE-2026-73610 not listed at time of writing): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
No public exploit code, Nuclei template, or researcher write-up is currently available for CVE-2026-73610. The attack chain described in this report is inferred from the NVD description and the vulnerability class; specific implementation details beyond the getLocalStorage endpoint, the storage map behavior, and the sanitization failure (three keys) are not disclosed in available data.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.