Files
vuln-osv/data/PyPI/GHSA-3r68-x3xc-rxpg.json

1 line
4.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"schema_version":"1.9.0","id":"GHSA-3r68-x3xc-rxpg","published":"2026-05-05T20:15:12Z","modified":"2026-07-13T16:43:07.322549535Z","aliases":["CVE-2026-43901","PYSEC-2026-3426"],"summary":"wireshark-mcp vulnerable to arbitrary file write via export_objects when WIRESHARK_MCP_ALLOWED_DIRS is not configured","details":"## Description\n\n### Impact\n\n`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**.\n\nThe 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.\n\n**Affected code** (`src/wireshark_mcp/tshark/client.py:531-543`):\n\n```python\n\noutput_validation = self._validate_output_path(dest_dir)\n\n# _validate_output_path only enforces the sandbox when _allowed_dirs is set.\n\n# Default: _allowed_dirs = None → no restriction.\n\nos.makedirs(dest_dir, exist_ok=True) # creates arbitrary directories\n\ncmd = [..., \"--export-objects\", f\"{protocol},{dest_dir}\"]\n\n```\n\n### Attack Scenario\n\nAn 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:\n\n```bash\n\ndest_dir=/home/user/.ssh/\n\n```\n\n`tshark` then extracts and writes the HTTP object to that path, granting the attacker SSH access.\n\nThe same technique can target:\n\n- `/etc/cron.d/`\n\n- Writable web roots\n\n- Other sensitive filesystem locations\n\n### Additional Affected Operations\n\nThe same missing sandbox affects:\n\n- `merge_pcap_files`\n\n- `editcap_trim`\n\n- `editcap_split`\n\n- `editcap_time_shift`\n\n- `editcap_deduplicate`\n\n- `text2pcap_import`\n\n### Proof of Concept\n\nConfirmed on **wireshark-mcp v1.1.5** with **tshark 4.6.4**.\n\nA crafted pcap’s HTTP object was successfully written to an arbitrary filesystem path when:\n\n```python\n\n_allowed_dirs = None\n\n```\n\n---\n\n## Patches\n\nNot yet patched.\n\nA fix should make the path sandbox **mandatory** for all file-write operations rather than optional:\n\n```python\n\n# Reject all write operations when no sandbox is configured\n\nif not self._allowed_dirs:\n\n return json.dumps({\n\n \"success\": False,\n\n \"error\": {\n\n \"type\": \"SecurityError\",\n\n \"message\": \"Set WIRESHARK_MCP_ALLOWED_DIRS before using file-write operations\"\n\n }\n\n })\n\n```\n\n---\n\n## Workarounds\n\nSet `WIRESHARK_MCP_ALLOWED_DIRS` to a restricted safe directory before starting the server:\n\n```bash\n\nexport WIRESHARK_MCP_ALLOWED_DIRS=/tmp/wireshark_mcp_safe\n\n```\n\nThis activates the existing sandbox and blocks writes outside the allowed path.\n\n---\n\n## Resources\n\n- Vulnerable code:\n\n - `src/wireshark_mcp/tshark/client.py` lines 521–543\n\n - `src/wireshark_mcp/tshark/client.py` lines 685–839\n\n- CWE-22: Improper Limitation of a Pathname to a Restricted Directory\n\n- CWE-73: External Control of File Name or Path","affected":[{"package":{"name":"wireshark-mcp","ecosystem":"PyPI","purl":"pkg:pypi/wireshark-mcp"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.1.5"}]}],"versions":["0.2.1","0.4.0","0.5.0","0.6.0","0.6.1","0.6.2","0.6.3","0.6.4","0.6.5","1.0.0","1.1.0","1.1.5"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-3r68-x3xc-rxpg/GHSA-3r68-x3xc-rxpg.json"}}],"references":[{"type":"WEB","url":"https://github.com/bx33661/Wireshark-MCP/security/advisories/GHSA-3r68-x3xc-rxpg"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-43901"},{"type":"PACKAGE","url":"https://github.com/bx33661/Wireshark-MCP"}],"database_specific":{"cwe_ids":["CWE-22"],"github_reviewed":true,"github_reviewed_at":"2026-05-05T20:15:12Z","nvd_published_at":"2026-05-11T23:20:21Z","severity":"MODERATE"},"severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N"}]}