支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:736

73.6%
一、 漏洞 CVE-2026-23847 基础信息
漏洞信息
                                        # 思源笔记 /api/icon/getDynamicIcon XSS漏洞

## 概述
SiYuan 是一款个人知识管理系统,其 3.5.4 版本之前存在反射型跨站脚本漏洞,位于 `/api/icon/getDynamicIcon` 接口。

## 影响版本
3.5.4 版本之前的 SiYuan 版本。

## 细节
该漏洞出现在 `/api/icon/getDynamicIcon` 接口,当生成文本图标(type=8)的 SVG 图像时,`content` 查询参数被直接插入 SVG 的 `<text>` 标签中,未进行 XML 转义处理。由于响应的 `Content-Type` 为 `image/svg+xml`,攻击者可通过注入恶意标签破坏 XML 结构,实现 JavaScript 代码执行。

## 影响
攻击者可构造恶意请求,利用未过滤的 SVG 输入在用户浏览器中执行任意 JavaScript 代码,导致反射型 XSS 攻击。
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
SiYuan Vulnerable to Reflected Cross-Site Scripting (XSS) via /api/icon/getDynamicIcon
来源:美国国家漏洞数据库 NVD
漏洞描述信息
SiYuan is a personal knowledge management system. Versions prior to 3.5.4 are vulnerable to reflected cross-site scripting in /api/icon/getDynamicIcon due to unsanitized SVG input. The endpoint generates SVG images for text icons (type=8). The content query parameter is inserted directly into the SVG <text> tag without XML escaping. Since the response Content-Type is image/svg+xml, injecting unescaped tags allows breaking the XML structure and executing JavaScript. Version 3.5.4 patches the issue.]
来源:美国国家漏洞数据库 NVD
CVSS信息
N/A
来源:美国国家漏洞数据库 NVD
漏洞类别
在Web页面生成时对输入的转义处理不恰当(跨站脚本)
来源:美国国家漏洞数据库 NVD
二、漏洞 CVE-2026-23847 的公开POC
#POC 描述源链接神龙链接
三、漏洞 CVE-2026-23847 的情报信息
  • 标题: Do not execute scripts in serving SVG by default to prevent XSS · Issue #16844 · siyuan-note/siyuan -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            - **Issue Title**: Do not execute scripts in serving SVG by default to prevent XSS
    - **Issue Number**: #16844
    - **Status**: Closed
    - **Author**: 88250
    - **Created**: 4 days ago
    - **Labels**: Enhancement
    - **Milestone**: 3.5.4
    - **Related GHSA Vulnerabilities**:
      - GHSA-pcqj-j3mq-jv5j
      - GHSA-w836-5qpm-7r93
    - **Issue Description**: 设置 - 编辑器 - 允许执行 SVG 脚本,默认不勾选,即不允许脚本执行,从服务端伺服的 assets/xxxx.svg 会剔除其中的脚本。
    - **Commits**:
      - Do not execute scripts in assets SVG by default to prevent XSS #16 (Verified)
      - Do not execute scripts in serving SVG by default to prevent XSS #1 (Verified)
    - **Comments**:
      - @YuxinZhaozyx又被提到,关心插件是否受此影响
      - GoVulnBot提及在一个可能的Go漏洞中提到了此问题
    - **Assignees**: 88250
    - **Participants**: 88250, TCOTC, GoVulnBot
                                            
    Do not execute scripts in serving SVG by default to prevent XSS · Issue #16844 · siyuan-note/siyuan
  • 标题: Reflected Cross-Site Scripting (XSS) via /api/icon/getDynamicIcon · Advisory · siyuan-note/siyuan · GitHub -- 🔗来源链接

    标签:x_refsource_CONFIRM

    神龙速读:
                                            ### 关键信息:
    
    **漏洞类型**:
    - 反射型跨站脚本攻击 (Reflected Cross-Site Scripting, XSS)
    
    **受影响版本**:
    - v3.5.3
    
    **修复版本**:
    - v3.5.4
    
    **CVE ID**:
    - CVE-2026-23847
    
    **漏洞细节**:
    - 由于未对输入的SVG内容进行处理,`/api/icon/getDynamicIcon`接口将查询参数直接插入SVG标签中。
    - 响应的Content-Type为`image/svg+xml`,注入未转义的标签会破坏XML结构并执行JavaScript。
    
    **PoC (概念验证)**:
    - Payload: `test</text><script>alert(window.origin)</script><text>`
    - 步骤:
        1. 打开任意笔记并点击更改图标->动态(文本)。
        2. 更改颜色并将Payload粘贴到自定义字段,点击此图标。
        3. 在DevTools中截取请求或从路径中获取。
        4. 打开URL后执行JavaScript Payload。
    
    **影响**:
    - 如果SVG被直接加载,就可在用户会话上下文中任意执行JavaScript,防止在图标的文本中使用合法字符如`<`和`>`。
    
    **报告者**:
    - jaroslaw-wawiorka
    
    **严重程度**:
    - 中等
                                            
    Reflected Cross-Site Scripting (XSS) via /api/icon/getDynamicIcon · Advisory · siyuan-note/siyuan · GitHub
  • 标题: :lock: Do not execute scripts in serving SVG by default to prevent XS… · siyuan-note/siyuan@5c0cc37 · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ## 漏洞关键信息总结
    
    ### 修复描述
    - **提交信息**:`Do not execute scripts in serving SVG by default to prevent XSS #16844`
    - **提交人**:88250
    - **提交时间**:两天前
    
    ### 漏洞细节
    - **漏洞类型**:跨站脚本攻击(XSS)
    - **漏洞位置**:`kernel/api/icon.go` 文件中的 `getDynamicIcon` 函数
    
    ### 修复代码
    - **新增代码**:
      ```go
      if !model.Conf.Editor.AllowSVGScript {
          svg = util.RemoveScriptsInSVG(svg)
      }
      ```
    - **修复说明**:默认情况下,不执行SVG中的脚本,以防止XSS攻击。
    
    ### 补丁影响
    - 此修复确保了在处理SVG图像时的安全性,避免了潜在的XSS风险,增强了系统的安全性。
                                            
    :lock: Do not execute scripts in serving SVG by default to prevent XS… · siyuan-note/siyuan@5c0cc37 · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2026-23847
四、漏洞 CVE-2026-23847 的评论

暂无评论


发表评论