SiYuan versions 3.8.7 through 3.8.8 contain a path traversal vulnerability due to improper normalization of Windows GLOBALROOT device-namespace aliases. This flaw allows attackers with high privileges to bypass the IsSensitivePath denylist and copy sensitive files such as the API token and TLS private key into the publicly accessible assets directory.
SiYuan 3.5.4 before 3.8.7 on Windows contains a sensitive-path denylist bypass in IsSensitivePath because the Windows extended-length prefix (\\?\) survives filepath.Clean and matches no forbidden prefix. Authenticated API callers can prepend the prefix to localPath in /api/import/importStdMd to copy workspace conf files, including the API token and TLS private keys, into assets served to unauthenticated clients.
SiYuan before v3.8.7 contains an sql injection vulnerability that allows admin-token holders to read history.db by injecting unescaped op and type=3 query values. Attackers can send crafted UNION SELECT payloads to searchHistory or getHistoryItems endpoints to exfiltrate deleted document content, titles, and paths.
SiYuan from 2.10.0 before 3.8.7 contains a stored cross-site scripting vulnerability that allows users with edit permission to inject script by placing javascript: URLs in math block content rendered with KaTeX trust enabled. Attackers can store \href, \url, or \includegraphics payloads that mathRender assigns via innerHTML, executing script in the application origin when a reader clicks the rendered link.
SiYuan before 3.8.7 contains a path traversal vulnerability in the MCP asset tool because validateAssetUploadPaths relies on an incomplete sensitive-path blacklist that omits .env and other secret files. Authenticated attackers driving the MCP asset upload action can copy such local files into the workspace and read them back via /assets/ over HTTP.
SiYuan is a self-hosted personal knowledge management system. In versions up to and including 3.8.3, the kernel's authentication guards (CheckAuth in kernel/model/session.go and IsSessionOriginAllowed in kernel/util/net.go) fail open when the HTTP Origin header is absent, on the incorrect assumption that any browser-initiated cross-site request carries an Origin. Because browsers omit Origin on cross-site top-level GET navigations and no-cors GET subresource loads — and the session cookie is SameSite=Lax — a single cross-site GET issued from any attacker-controlled web page is granted RoleAdministrator, both on default installations with no access-authorization code and on password-protected instances with a live session. Combined with content-type sniffing on the /api/network/proxy endpoint, which allows attacker-controlled HTML to be served under SiYuan's own origin, this permits an unauthenticated remote attacker to execute arbitrary script in the SiYuan origin (http://127.0.0.1:6806), invoke administrator APIs, and exfiltrate the persistent kernel API token. This issue is fixed in version 3.8.4.
SiYuan note-taking software versions before 3.8.4 have an authorization omission vulnerability in the siyuan-get IPC handler. This flaw allows remote kernel renderers to access native clipboard data formats such as MathML, Office, and WPS bytes by invoking specific clipboard read commands. Attackers controlling remote renderer content can exploit this to obtain sensitive clipboard contents during user-mediated paste operations. The vulnerability is fixed in version 3.8.4.
SiYuan versions prior to 3.8.4 have an authentication bypass vulnerability in the publish service. Session cookies are transmitted without Secure or SameSite attributes over plaintext HTTP, allowing an attacker on the network path to capture and replay a valid session cookie to access authenticated publish endpoints without the account password. This issue is fixed in version 3.8.4.