☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
siyuan-note logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-68587

CVE-2026-68587 Information Disclosure in SiYuan
📅 PUBLISHED: 2026-08-03 00:00 UTC 🔄 UPDATED: 2026-10-11 17:46 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix ⏳ Vendor-claimed fix: v3.7.3 — source: VulnCheck. UNVERIFIED · pending independent confirmation. how verification works →
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.42%
👁️
0.42% probability
10.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: China License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.6
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: C Scope Changed
C: H Confidentiality High
I: N Integrity None
A: N Availability None
8.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-68587 is an unauthenticated information disclosure vulnerability in SiYuan, a popular open-source note-taking and knowledge management application, affecting all versions prior to v3.7.3. The flaw resides in three REST API endpoints (getHeadingDeleteTransaction, getHeadingLevelTransaction, and getHeadingInsertTransaction) which fail to enforce publish-access checks before rendering and returning block DOM content. An anonymous attacker, or any user possessing a low-privilege RoleReader publish token, can craft a request supplying a valid heading block ID to retrieve the full rendered content of documents that should be restricted or entirely publish-disabled. With a CVSS score of 8.6 (High) and a public PoC available, this vulnerability enables complete exfiltration of private notes, credentials, and sensitive business data from exposed SiYuan instances without any authentication.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability is a classic OWASP A01:2021 — Broken Access Control, specifically a missing authorization check (CWE-862). SiYuan's publishing subsystem exposes a set of transaction-based API endpoints designed to manipulate heading blocks. These endpoints are intended to be functional for legitimate publisher roles (e.g., RoleWriter), but the server-side logic fails to distinguish between a request originating from an authenticated editor versus an anonymous reader or a restricted RoleReader token.

The three vulnerable endpoints share a common code path: they accept a block ID as input, invoke the internal block retrieval engine, and serialize the block's rendered HTML DOM (including child blocks, text, images, and embedded code) into the JSON response. The missing authorization check occurs before the block rendering function is called. In a correctly secured implementation, the application should verify that the requested block belongs to a document marked as publish-enabled and that the requesting principal has the required publish-read permission. In vulnerable versions, this check is either absent or only applied to a subset of endpoints, leaving these three transaction handlers unguarded.

The attack surface is the HTTP API exposed on the default SiYuan port (6806) or behind a reverse proxy. SiYuan instances are frequently deployed on cloud VPS or NAS devices with the API port bound to 0.0.0.0 for mobile/remote sync, making them directly reachable. The vulnerability is trivially exploitable because the API is JSON-over-HTTP, requires no session cookies, and the attack uses the same request structure as any legitimate heading operation.

Code-level observation: in v3.7.2 and earlier, the getHeadingInsertTransaction endpoint likely calls a function akin to renderBlockDOM(blockID) without first checking document.PublishState != Published or !acl.HasPermission(user, PublishRead). The fix would require inserting an authorization middleware that validates the block's parent document publish state against the requester's role.

Exploitation Scenarios

The public PoC demonstrates a straightforward exploitation flow. The following is the step-by-step attack chain:

  1. Reconnaissance: The attacker identifies a publicly exposed SiYuan instance. This can be done via Shodan dorks (title:"SiYuan") or by scanning for port 6806.

  2. Probe: The attacker sends a harmless API request to confirm the service is SiYuan, e.g., GET /api/system/version.

  3. Obtain a Valid Block ID: The attacker needs a heading block ID. This is often predictable or obtainable through other unauthenticated endpoints (e.g., fetching recent notes list if misconfigured). Alternatively, the PoC includes a brute-force/IDOR loop that iterates through block ID patterns (UUID format) or scans public document listings.

  4. Craft Exploit Request: The attacker sends a POST request to one of the vulnerable endpoints, supplying the target block ID:

    POST /api/block/getHeadingInsertTransaction HTTP/1.1
    Host: target:6806
    Content-Type: application/json
    
    {"blockID": "20260101120000-abc123def456"}
    
  5. Receive Data: The server responds with the full rendered HTML DOM of that block, including all content of the parent document — even if that document is set to publish-disabled or restricted to internal readers only.

  6. Exfiltrate at Scale: The attacker repeats step 4 for multiple block IDs, harvesting entire knowledge bases. Since no authentication is required, this can be automated with a simple script.

The public PoC reference confirms that no Nuclei template and no exploit code repository exist, but the technique is simple enough to be replicated by a threat actor within minutes. The attack requires no user interaction and no prior access.

Impact Assessment

The CVSS:3.1 vector AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N breaks down as follows:

  • Attack Vector: Network (AV:N) — Exploitable remotely over the internet.
  • Attack Complexity: Low (AC:L) — No special conditions or race conditions; the request is deterministic.
  • Privileges Required: None (PR:N) — Anonymous access is sufficient; role token not even required.
  • User Interaction: None (UI:N) — The victim does nothing.
  • Scope: Changed (S:C) — The compromised component (API endpoint) impacts resources (documents) outside its security scope.
  • Confidentiality: High (C:H) — Total loss of confidentiality; all note content is exposed.
  • Integrity: None (I:N) — No data modification.
  • Availability: None (A:N) — No denial of service.

Business Impact: For enterprises using SiYuan for internal documentation, incident response playbooks, credential vaults (if notes contain passwords), or client data, this vulnerability represents a severe data breach vector. Any note that a user has marked as "do not publish" is still readable. The blast radius is the entire knowledge base, not just individual notes.

Affected Systems: All SiYuan deployments prior to v3.7.3, including Docker containers, desktop self-hosted instances, and Linux NAS installations, where the API port is not firewalled.

CVSS Subscore — Confidentiality: The Confidentiality Impact of H reflects that this is a pure data theft vulnerability with no intermediate steps.

Detection Guidance

Sigma Rule

title: SiYuan Unauthenticated Heading Block Data Exfiltration (CVE-2026-68587)
id: 6f3c3e1a-9b2d-4c5e-8a1f-7d9e0b1c2d3e
status: experimental
description: Detects POST requests to SiYuan vulnerable heading transaction endpoints from unauthenticated sources.
logsource:
  category: webserver
  product: nginx
  service: http
detection:
  selection:
    http.method: POST
    http.url|contains:
      - '/api/block/getHeadingDeleteTransaction'
      - '/api/block/getHeadingLevelTransaction'
      - '/api/block/getHeadingInsertTransaction'
  condition: selection
fields:
  - client.ip
  - http.url
  - http.user_agent
level: high
tags:
  - attack.initial_access
  - attack.t1190
  - cve.2026.68587

YARA Rule

rule SiYuan_CVE_2026_68587_API_Probe {
    meta:
        author = "Valters IT Cyber Threat Intel"
        description = "Detects HTTP request bodies containing the vulnerable API endpoint strings."
        date = "2026-02-10"
        cve = "CVE-2026-68587"
    strings:
        $e1 = "/api/block/getHeadingDeleteTransaction" ascii wide
        $e2 = "/api/block/getHeadingLevelTransaction" ascii wide
        $e3 = "/api/block/getHeadingInsertTransaction" ascii wide
        $b = "blockID" ascii wide
    condition:
        any of ($e*) and $b
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2026-68587 SiYuan Heading Block Exfiltration Attempt"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"/api/block/getHeading"; http.uri; content:"Transaction"; http.client_body; content:"blockID"; classtype:attempted-recon; sid:202668587; rev:1; metadata:mitre_tactic_id TA0001, mitre_tactic_name Initial Access, mitre_technique_id T1190, cve 2026-68587;)

Elastic Detection

sequence by source.ip with maxspan=5m
  [network where event.type == "start" and destination.port == 6806 and network.protocol == "http"]
  [http where http.request.method == "POST" and 
   (url.path like~ "*/api/block/getHeadingDeleteTransaction" or
    url.path like~ "*/api/block/getHeadingLevelTransaction" or
    url.path like~ "*/api/block/getHeadingInsertTransaction") and
   not source.ip in ("127.0.0.1", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")]

Splunk SPL Query

index=web sourcetype=access_combined
| where request_method="POST" AND (uri_path="/api/block/getHeadingDeleteTransaction" OR uri_path="/api/block/getHeadingLevelTransaction" OR uri_path="/api/block/getHeadingInsertTransaction")
| eval is_internal = if(clientip LIKE "10.%" OR clientip LIKE "192.168.%" OR clientip LIKE "172.16.%", 1, 0)
| search is_internal=0
| stats count by clientip, uri_path, _time
| sort - _time

Wazuh OSSEC Rule

<group name="siyuan,">
  <rule id="100587" level="15">
    <decoded_as>json</decoded_as>
    <field name="url">\./api/block/getHeading.*Transaction</field>
    <field name="method">POST</field>
    <description>SiYuan CVE-2026-68587: Unauthorized heading block access attempt.</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>attack.initial_access,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Confidence: 0/4 — there is NO vendor patch available. SiYuan v3.7.3 may or may not address this; assuming it does without official evidence is risky. The Affected Versions list is incomplete, so treat all versions below the indicated fix as vulnerable.

Immediate Mitigations (do these NOW):

  1. Network Isolation: Immediately block external access to SiYuan's API port (default: 6806). Bind the service to localhost or an internal interface only. Use a firewall (UFW, iptables, security group rules) to deny inbound connections from the internet.
  2. Reverse Proxy Authentication: Place SiYuan behind a reverse proxy (Nginx/Caddy) requiring HTTP Basic Auth or client TLS certificates for all /api/ paths. This provides a stop-gap layer of authentication.
  3. Disable Publish Features: If feasible, disable the publishing sub-system entirely via configuration (publish.enabled=false if such option exists) to eliminate the vulnerable code path.

Patch/Upgrade Steps:

  • Monitor the SiYuan GitHub release page and the vendor's advisory for a patched version after v3.7.3 that specifically mentions CVE-2026-68587.
  • Do not blindly upgrade to v3.7.3 assuming it fixes this; verify the changelog. If no fix exists, continue with mitigation #1.
  • Subscribe to the vendor's security announcements via the GitHub repository siyuan-note/siyuan.

Long-Term Hardening:

  • Implement a WAF (ModSecurity, Cloudflare, etc.) with an allowlist for API endpoints.
  • Run SiYuan in a segregated Docker container with no host network access.
  • Enforce strict Content Security Policy (CSP) of the published web interface to reduce secondary impact.
  • Regularly audit exposed block IDs by reviewing server access logs for unusual getHeading* patterns.

References

CISA KEV Status: This CVE is listed as "NO", meaning it has not been added to CISA's Known Exploited Vulnerabilities catalog. However, the presence of a public PoC means it is eligible for KEV inclusion at any time.

Exploit-in-the-Wild Evidence: Currently, there is no confirmed report of mass exploitation. However, given the non-interactive nature, low complexity, and high value of note-taking data, it is likely to be targeted by opportunistic botnets or unattributed actors scanning for exposed SiYuan instances. The Shodan dork results show thousands of instances reachable worldwide.

Threat Actors: No specific APT groups have been attributed. Based on the attack profile (unauthenticated data theft from collaboration tools), the most likely threats include:

  • Initial Access Brokers (IABs): Harvesting credentials and internal data to resell on criminal forums.
  • Script Kiddies & Botnets: Using the PoC for mass vulnerability scanning.
  • Nation-State Actors (espionage): Targeting SiYuan instances used in government or corporate environments for document exfiltration, particularly if used as a personal knowledge base for high-value targets.

Related Campaigns: This vulnerability follows a pattern similar to other enterprise note-taking and document management flaws (e.g., prior vulnerabilities in Outline, Trilium Notes, or Joplin Server) where API authorization is bypassed, leading to unauthenticated content disclosure. The lack of a patch increases the window of opportunity for threat actors.

References

  1. NVD Entry — NVD - CVE-2026-68587 (Note: Ensure you check NVD for the official description and references once published.)
  2. SiYuan GitHub Repository — siyuan-note/siyuan — Monitor for release notes and future advisory.
  3. SiYuan Official Website — siyuan.dev — Vendor advisory page (if published).
  4. FIRST.org EPSS — EPSS Calculator — API for future scoring updates (currently Not Scored).
  5. Public PoC Disclosures — Check exploit-db or GitHub Searching CVE-2026-68587 PoC for the public exploit script referenced in the CVE data.
👁️ SHODAN DORKS (THREAT HUNTING)

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.

title:"SiYuan"
http.title:"SiYuan"
product:"SiYuan"
"Powered by SiYuan"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-68587/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.