IPBUF安全漏洞报告
English
CVE-2025-67364 CVSS 7.5 高危

CVE-2025-67364 fast-filesystem-mcp路径遍历漏洞

披露日期: 2026-01-07

漏洞信息

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

相关标签

路径遍历符号链接绕过fast-filesystem-mcpCVE-2025-67364高危漏洞MCP工具文件读取漏洞信息泄露

漏洞概述

CVE-2025-67364是fast-filesystem-mcp 3.4.0版本中发现的一个高危路径遍历漏洞。该漏洞源于程序在文件操作工具(包括fast_read_file函数)中使用了不安全的路径验证机制。漏洞的核心问题在于safePath和isPathAllowed函数依赖path.resolve()进行路径解析,但该方法无法正确处理符号链接(symlink)。攻击者可以通过在允许访问的目录内创建符号链接,使其指向系统受限路径(如/etc/passwd或其他敏感文件),从而绕过目录访问限制,成功读取未经授权的文件内容。由于该漏洞无需任何认证即可被利用,且攻击复杂度较低,因此具有较高的安全风险。CVSS评分7.5(高危)表明该漏洞对系统机密性造成严重影响,可能导致敏感信息泄露。建议受影响用户尽快升级到安全版本或采取临时缓解措施。

技术细节

fast-filesystem-mcp是一个用于文件操作的MCP(Model Context Protocol)工具,在3.4.0版本中实现了fast_read_file等文件读取功能。漏洞的技术根源在于路径验证逻辑存在缺陷:程序使用path.resolve()将用户输入的相对路径或绝对路径转换为规范化路径,然后通过isPathAllowed函数检查该路径是否在允许访问的目录范围内。然而,path.resolve()仅进行字符串层面的路径解析,不会解析符号链接的实际指向。当攻击者在允许目录(如/tmp)中创建一个指向系统敏感文件(如/etc/passwd)的符号链接(如/tmp/evil -> /etc/passwd),然后通过合法的路径引用(如/tmp/evil)访问时,验证函数会认为该路径在允许范围内,从而绕过安全检查。此外,由于path.resolve()不会解析符号链接,程序最终会读取符号链接指向的实际文件内容,导致敏感信息泄露。攻击者可以利用此漏洞读取服务器上的配置文件、密钥文件、密码文件等敏感数据,整个过程无需任何认证凭证。

攻击链分析

STEP 1
步骤1
攻击者在允许访问的目录(如/tmp)中创建一个符号链接,指向系统受限文件(如/etc/passwd、/root/.ssh/id_rsa等)
STEP 2
步骤2
攻击者通过fast-filesystem-mcp的文件操作工具(如fast_read_file)使用合法路径引用该符号链接
STEP 3
步骤3
程序调用safePath和isPathAllowed函数进行路径验证,使用path.resolve()解析路径但不会解析符号链接
STEP 4
步骤4
验证函数认为符号链接路径在允许目录范围内,绕过安全检查
STEP 5
步骤5
程序读取符号链接指向的实际文件内容,将敏感数据返回给攻击者,导致机密信息泄露

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os import tempfile # PoC for CVE-2025-67364: Path Traversal via Symlink in fast-filesystem-mcp # This demonstrates how symbolic links can bypass path validation def create_symlink_poc(): """ Simulate the path traversal attack: 1. Create a symlink in an allowed directory pointing to a restricted file 2. Access the file through the symlink to bypass validation """ allowed_dir = tempfile.mkdtemp() # Simulated allowed directory target_file = '/etc/passwd' # Restricted system file # Step 1: Create symlink in allowed directory symlink_path = os.path.join(allowed_dir, 'sensitive_file') try: os.symlink(target_file, symlink_path) print(f'[+] Symlink created: {symlink_path} -> {target_file}') except PermissionError: print('[-] Permission denied to create symlink') return # Step 2: Demonstrate path.resolve() does not resolve symlinks from pathlib import Path resolved = str(Path(symlink_path).resolve()) print(f'[*] Path resolved by Path.resolve(): {resolved}') print(f'[*] Original symlink path: {symlink_path}') # Step 3: Check if path validation would pass def isPathAllowed(path, allowed_dir): resolved_path = str(Path(path).resolve()) return resolved_path.startswith(allowed_dir) # This check PASSES incorrectly - vulnerability! check_result = isPathAllowed(symlink_path, allowed_dir) print(f'[*] isPathAllowed({symlink_path}, {allowed_dir}): {check_result}') if check_result: print('[+] VULNERABLE: Path validation bypassed via symlink!') # Cleanup os.unlink(symlink_path) os.rmdir(allowed_dir) if __name__ == '__main__': create_symlink_poc()

影响范围

fast-filesystem-mcp 3.4.0

防御指南

临时缓解措施
在等待官方修复期间,可采取以下临时缓解措施:1)限制fast-filesystem-mcp的运行权限,避免使用root权限运行;2)配置系统策略禁止在公共目录创建符号链接;3)监控和审计文件访问日志,及时发现异常访问行为;4)使用SELinux或AppArmor等强制访问控制工具限制进程的文件系统访问范围;5)将fast-filesystem-mcp部署在隔离的容器或虚拟机环境中,降低潜在危害范围。

参考链接

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