关键信息总结 漏洞概述 漏洞类型: 存储型跨站脚本攻击 (XSS) 通过未受保护的 SVG 附件上传导致 Token 泄露 严重性: 高(评分7.3/10) 影响范围 受影响版本: ≤v1.1.0 已修复版本: v2.0.0 漏洞细节 问题描述: 应用程序允许用户上传SVG文件作为任务附件,但未对SVG内容进行服务器端清理。攻击者可利用SVG文件中的 标签或事件处理器(如onload)执行恶意代码,造成在用户的浏览器中运行。 关键安全问题: - 无服务器端SVG内容清理。 - SVG附件被内联渲染而非强制下载。 - SVG文件中的内嵌JavaScript可以执行。 - 客户端脚本可以访问localStorage中的认证Token。 漏洞利用 测试环境: 应用版本1.1.0,自托管形式部署。 复现步骤: 1. 登录应用程序。 2. 创建或打开一个任务。 3. 上传一个包含恶意脚本的SVG文件作为附件。 4. 保存任务并打开项目,复制附件的直接URL。 5. 在新标签页中打开附件URL。 6. 恶意脚本立即执行,展示出localStorage中的认证Token。 影响 潜在影响: - 受害者浏览器中任意JavaScript执行。 - 认证Token暴露。 - 可能的账户攻击。 - 以受害者身份执行认证动作。 - 如果高权限用户打开恶意文件,可能进行权限提升。 - 任何访问恶意SVG附件的认证用户可能会受到影响。 推荐措施 缓解方案: - 应用适当的服务器端SVG内容清洗,移除 标签、事件处理器及其他可执行内容。 - 强制下载附件,而非内联渲染。 - 设置严格的CSP以阻止上传文件中执行JavaScript。 - 采用HttpOnly、安全Cookies而非localStorage存储认证Token,防止JavaScript访问。