CVE-2026-23847CVE-2026-23847是SiYuan个人知识管理系统中的一个中危反射型跨站脚本(XSS)漏洞。该漏洞存在于/api/icon/getDynamicIcon接口,由于对SVG输入内容未进行充分的清理和转义,导致攻击者可以通过构造恶意的内容参数注入未转义的SVG标签。SiYuan是一款流行的本地优先的个人知识管理软件,支持Markdown编辑、双链笔记等功能。由于该接口用于生成动态图标(type=8),而content参数被直接插入到SVG的<text>标签中,攻击者可以利用此漏洞在用户访问恶意构造的链接时执行任意JavaScript代码。由于响应Content-Type为image/svg+xml,浏览器会将响应内容作为XML/SVG解析,从而允许通过注入标签破坏XML结构并执行脚本。此漏洞影响3.5.4之前的所有版本,CVSS评分6.1,属于中等严重程度。
该漏洞的技术根源在于SiYuan的/api/icon/getDynamicIcon端点对用户输入的content参数缺乏安全处理。具体来说,当用户请求生成文本图标(type=8)时,系统将content参数的值直接拼接到SVG文档的<text>标签内,而没有进行XML实体转义或输入验证。攻击者可以通过在content参数中注入SVG标签或HTML标签来破坏SVG文档结构。例如,攻击者可以注入</text><script>alert(document.cookie)</script><text>来打破原有的XML结构,并在其中插入script标签。由于响应的Content-Type设置为image/svg+xml,浏览器会将其作为XML文档解析,从而执行注入的JavaScript代码。这种反射型XSS攻击需要诱导用户访问包含恶意参数的链接,利用用户交互完成攻击。漏洞影响SiYuan 3.5.4之前的所有版本,攻击向量为网络层面,复杂度低,无需认证,但需要用户交互。