CVE-2026-31809 json
SiYuan has a SVG Sanitizer Bypass via Whitespace in `javascript:` URI — Unauthenticated XSS
published 2026-03-10 8 mo ago modified 2026-06-17 4 mo ago also EUVD-2026-10896 , GHSA-pmc9-f5qr-2pcr , GO-2026-4669
- cvss
- 6.1
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 46%
- public exploits
- 0
- none known, plus a Nuclei check
Summary
SiYuan is a personal knowledge management system. Prior to 3.5.10, SiYuan's SVG sanitizer (SanitizeSVG) checks href attributes for the javascript: prefix using strings.HasPrefix(). However, inserting ASCII tab (	), newline ( ), or carriage return ( ) characters inside the javascript: string bypasses this prefix check. Browsers strip these characters per the WHATWG URL specification before parsing the URL scheme, so the JavaScript still executes. This allows an attacker to inject executable JavaScript into the unauthenticated /api/icon/getDynamicIcon endpoint, creating a reflected XSS. This is a second bypass of the fix for CVE-2026-29183 (fixed in v3.5.9). This vulnerability is fixed in 3.5.10.
Patch / fix
- go github.com/siyuan-note/siyuan/kernel 0.0.0-20260310025236-297bd526708f
- b3log siyuan 3.5.10
- govulncheck-vulndb openSUSE Leap 15.6 0.0.20260317T205859-150000.1.152.1
suse advisories SUSE-SU-2026:1042-1
- govulncheck-vulndb openSUSE Leap 16.0 0.0.20260723T184607-160000.1.1
opensuse advisories openSUSE-SU-2026:21483-1
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
0.56% chance of exploitation in the next 30 days, higher than 46% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- Nuclei template SiYuan <= v3.5.9 - Cross Site Scripting nuclei detection template
- github.com https://github.com/siyuan-note/siyuan/security/advisories/GHSA-pmc9-f5qr-2pcr referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 6.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N |
| CNA | 4.0 | 6.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 6.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/siyuan-note/siyuan/kernel | <0.0.0-20260310025236-297bd526708f |
0.0.0-20260310025236-297bd526708f |
Affected products
- siyuan-note siyuan
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/siyuan-note/siyuan/security/advisories/GHSA-pmc9-f5qr-2pcr
web, exploit, vendor-advisory, advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-31809
advisory
-
github.com
/siyuan-note/siyuan
package
-
github.com
/siyuan-note/siyuan/releases/tag/v3.5.10
web
Sources
- CVE List CVE-2026-31809
- GitHub Advisory GHSA-pmc9-f5qr-2pcr
- NVD CVE-2026-31809
- OSV GO-2026-4669
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.