GitHub Advisoryadvisory · PyPI
GHSA-3r68-x3xc-rxpg wireshark-mcp vulnerable to arbitrary file write via export_objects when WIRESHARK_MCP_ALLOWED_DIRS is not configured
MEDIUM
Official page ↗
- Aliases
- CVE-2026-43901
- Ecosystem
- PyPI
- Packages
- wireshark-mcp
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
- Weaknesses
- CWE-22
- Reviewed
- 2026-05-05
Affected packages
• PyPI wireshark-mcp: <= 1.1.5 (no fix yet)
Description
Description
Impact
`wireshark-mcp` exposes a `wireshark_export_objects` MCP tool that accepts an attacker-controlled `dest_dir` parameter and passes it to tshark's `--export-objects` flag with no mandatory path restriction.
The path sandbox (`_allowed_dirs`) is `None` by default and only activates when the environment variable `WIRESHARK_MCP_ALLOWED_DIRS` is explicitly set. In a default installation, any directory on the filesystem can be used as the export destination.
Affected code (`src/wireshark_mcp/tshark/client.py:531-543`):
```python
output_validation = self._validate_output_path(dest_dir)
_validate_output_path only enforces the sandbox when _allowed_dirs is set.
Default: _allowed_dirs = None → no restriction.
os.makedirs(dest_dir, exist_ok=True) # creates arbitrary directories
cmd = [..., "--export-objects", f"{protocol},{dest_dir}"]
```
Attack Scenario
An attacker embeds a crafted HTTP response in a pcap file (e.g. `Content-Disposition: filename=authorized_keys`). Via prompt injection in the pcap payload, an AI model using this MCP server is manipulated into calling `wireshark_export_objects` with:
```bash
dest_dir=/home/user/.ssh/
```
`tshark` then extracts and writes the HTTP object to that path, granting the attacker SSH access.
The same technique can target:
• `/etc/cron.d/`
• Writable web roots
• Other sensitive filesystem locations
Additional Affected Operations
The same missing sandbox affects:
• `merge_pcap_files`
• `editcap_trim`
• `editcap_split`
• `editcap_time_shift`
• `editcap_deduplicate`
• `text2pcap_import`
Proof of Concept
Confirmed on wireshark-mcp v1.1.5 with tshark 4.6.4.
A crafted pcap’s HTTP object was successfully written to an arbitrary filesystem path when:
```python
_allowed_dirs = None
```
---
Patches
Not yet patched.
A fix should make the path sandbox mandatory for all file-write operations rather than optional:
```python
Reject all write operations when no sandbox is configured
if not self._allowed_dirs:
return json.dumps({
"success": False,
"error": {
"type": "SecurityError",
"message": "Set WIRESHARK_MCP_ALLOWED_DIRS before using file-write operations"
}
})
```
---
Workarounds
Set `WIRESHARK_MCP_ALLOWED_DIRS` to a restricted safe directory before starting the server:
```bash
export WIRESHARK_MCP_ALLOWED_DIRS=/tmp/wireshark_mcp_safe
```
This activates the existing sandbox and blocks writes outside the allowed path.
---
Resources
• Vulnerable code:
• `src/wireshark_mcp/tshark/client.py` lines 521–543
• `src/wireshark_mcp/tshark/client.py` lines 685–839
• CWE-22: Improper Limitation of a Pathname to a Restricted Directory
• CWE-73: External Control of File Name or Path
Related
Alias · CVE (1)
- CVE-2026-43901 Wireshark MCP is an MCP Server that turns tshark into a structured analysis interface, then layers in optional Wireshark suite utilities. vulnerability
Weakness · CWE (1)
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness