📂 CKFinder 1.4.3 – 通过恶意 SVG 上传实现存储型跨站脚本(XSS)
CVE ID: CVE-2025-63830
🧭 概述
在 CKFinder v1.4.3 中发现了一个存储型跨站脚本(XSS)漏洞。
该问题存在于 文件上传 功能中,其未能正确清理包含活动内容的 SVG 文件。
因此,当上传的文件被查看或预览时,攻击者可以在受害者浏览器的上下文中执行任意 JavaScript 代码。
⚙️ 详细信息
- 发现名称:通过恶意 SVG 上传实现存储型跨站脚本(XSS)
- 严重性:高
- CVE ID:CVE-2025-63830
- 受影响组件:文件上传功能
- 受影响产品:CKFinder v1.4.3
- 厂商:CKSource Holding sp. z o.o.
- 攻击类型:远程
🧾 描述
CKFinder v1.4.3 的 文件上传 功能存在 存储型跨站脚本(XSS) 漏洞。
上传包含 JavaScript 代码的特制 SVG 文件后,当该文件稍后在应用程序中被访问或预览时,会导致持久性脚本执行。
这是因为 SVG 文件按原样存储和提供,允许嵌入的 <script> 标签、事件处理程序(例如 onload、onclick)或 <foreignObject> 元素在应用程序的来源上下文中执行。
🧪 复现步骤
- 登录集成了 CKFinder v1.4.3 的应用程序。
- 导航到 文件上传 功能。
- 上传以下恶意 SVG 文件:
- 上传后,在 CKFinder 文件管理器或任何关联视图中访问或预览该文件。
- 观察浏览器中的 JavaScript 执行情况。
🎯 影响 / 风险
- 在受害者浏览器中执行任意 JavaScript。
- 窃取会话令牌或敏感信息。
- DOM 操作或重定向到恶意网站。
- 可能在管理界面中进行横向移动。
🛡️ 修复方案
- 在存储或渲染之前 清理并验证 上传的 SVG 文件。
- 如果不需要,禁用 SVG 上传。
- 如果需要 SVG 上传:
- 在渲染前使用安全的 SVG 清理器(例如 DOMPurify、SVG-Sanitizer)。
- 使用安全响应头提供上传的 SVG:
Content-Type: image/svg+xml; charset=UTF-8
Content-Disposition: attachment
X-Content-Type-Options: nosniff
- 将用户上传的文件托管在 独立的域名或 CDN 上,以强制执行来源隔离。
- 升级到最新版本的 CKFinder,因为较新版本可能包含改进的文件清理和安全处理。
概念验证
👤 发现者
Shubham Ghadge
安全研究员 / 应用程序安全顾问