Impact
SiYuan’s SanitizeSVG function contains an incomplete blocklist that rejects data:text/html and data:image/svg+xml but permits data:text/xml and data:application/xml. When the /api/icon/getDynamicIcon endpoint receives user‑controlled content via the content parameter, it injects that value directly into SVG markup using fmt.Sprintf without escaping and serves it with a Content‑Type of image/svg+xml. This allows an attacker to craft an SVG that contains a link with a data:text/xml MIME type; clicking the link triggers JavaScript execution and results in a click‑through cross‑site scripting (XSS) vulnerability. The weakness is a classic reflected client‑side XSS, classified under CWE‑79.
Affected Systems
The affected product is SiYuan, a personal knowledge‑management system developed by Siyuan‑Note. All versions 3.6.0 and earlier are vulnerable to the bypass, while the issue was addressed in release 3.6.1 and later versions are considered fixed.
Risk and Exploitability
The vulnerability has a CVSS base score of 9.3, indicating high severity. EPSS scores below 1% suggest a low probability of widespread exploitation. The issue is not listed in the CISA KEV catalog. Exploitation requires no authentication; a malicious link can be sent to a victim or embedded in a page via <object> or <embed> tags. Successful exploitation can lead to data theft, session hijacking, or other client‑side malicious behaviors.
OpenCVE Enrichment
Github GHSA