{"id":"CVE-2026-116169","kind":"vulnerability","aliases":["CVE-2026-116169"],"related":[],"title":"SiYuan: stored XSS in math blocks runs script on link click","description":"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.","summary":"SiYuan notes from 2.10.0 before 3.8.7 let a user with edit permission store javascript: URLs inside math blocks, which KaTeX renders with trust enabled. When another reader clicks the rendered link, the script runs in the SiYuan application origin.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["multi-user","package","self-hosted","siyuan"],"not_affected_if":["single-user","version-3.8.7-or-later"],"how_to_check":"- Check the installed SiYuan version in the app's About dialog or package metadata; versions from `2.10.0` up to but not including `3.8.7` are affected.\n- Look for math blocks containing `\\href`, `\\url` or `\\includegraphics` with `javascript:` targets in notes that untrusted editors can write to.","fix":"- Upgrade SiYuan to `3.8.7` or later.\n- Until upgraded, restrict edit permission on workspaces to trusted users.","status":"open","published_at":"2026-10-25T14:16:56+00:00","first_seen_at":"2026-10-25T14:41:23+00:00","triaged_at":"2026-10-25T14:42:59+00:00","updated_at":"2026-10-25T14:42:59+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T14:42:59Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade SiYuan to `3.8.7` or later.\n- Until upgraded, restrict edit permission on workspaces to trusted users.","reach":"network","title":"SiYuan: stored XSS in math blocks runs script on link click","impact":"medium","summary":"SiYuan notes from 2.10.0 before 3.8.7 let a user with edit permission store javascript: URLs inside math blocks, which KaTeX renders with trust enabled. When another reader clicks the rendered link, the script runs in the SiYuan application origin.","category":"package","nicknames":[],"who_cares":["siyuan","self-hosted","multi-user"],"confidence":0.7,"needs_auth":"yes","worst_case":"Script runs in the SiYuan origin when a reader clicks a stored link.","analyst_note":"","how_to_check":"- Check the installed SiYuan version in the app's About dialog or package metadata; versions from `2.10.0` up to but not including `3.8.7` are affected.\n- Look for math blocks containing `\\href`, `\\url` or `\\includegraphics` with `javascript:` targets in notes that untrusted editors can write to.","needs_analyst":false,"not_affected_if":["single-user","version-3.8.7-or-later"],"who_is_affected":"Teams that run SiYuan with multiple users who have edit permission on shared notebooks are exposed, since a stored payload fires for every reader who clicks the link. A single-user install where only the owner edits content has little exposure. Hosted or single-user setups with no other editors can skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000624,"input_tokens":3364,"output_tokens":575,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-116169':14A,17A '-2026':13A,16A '2.10.0':29B,67C '3.8.7':31B,69C 'allow':79C 'anoth':51B 'applic':63B,117C 'assign':110C 'attack':100C 'block':6A,43B,93C 'click':11A,53B,122C 'contain':70C 'content':94C 'cross':74C 'cross-sit':73C 'cve':12A,15A 'edit':36B,82C 'enabl':49B,99C 'execut':113C 'host':24B 'href':103C 'includegraph':106C 'inject':85C 'innerhtml':112C 'insid':41B 'javascript':39B,89C 'katex':45B,97C 'let':32B 'link':10A,56B,125C 'math':5A,42B,92C 'mathrend':109C 'multi':19B 'multi-us':18B 'note':27B 'origin':64B,118C 'packag':21B 'payload':107C 'permiss':37B,83C 'place':88C 'reader':52B,121C 'render':46B,55B,95C,124C 'run':7A,59B 'script':8A,58B,76C,86C,114C 'self':23B 'self-host':22B 'site':75C 'siyuan':1A,25B,26B,62B,65C 'store':2A,38B,72C,102C 'trust':48B,98C 'url':40B,90C,104C 'user':20B,34B,80C 'via':111C 'vulner':77C 'xss':3A","nicknames":[],"mitigations":[],"who_affected":"Teams that run SiYuan with multiple users who have edit permission on shared notebooks are exposed, since a stored payload fires for every reader who clicks the link. A single-user install where only the owner edits content has little exposure. Hosted or single-user setups with no other editors can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-25T14:16:56+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116169","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116169","severity":null,"published_at":"2026-10-25T14:16:56+00:00","modified_at":"2026-10-25T14:16:56+00:00","first_seen_at":"2026-10-25T14:41:23+00:00","fetched_at":"2026-10-25T14:41:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}