The dynamic-mcp PyPI artifact presented itself as useful MCP integration code. The package automatically opened an unauthenticated local service and used Cloudflared to establish an outbound tunnel reachable through an attacker-controlled rendezvous address. The public tunnel behavior was present since the earliest reviewed distribution, while the arbitrary…
Inspect the ClaimsCase · DiggingBeagle record
A malicious dynamic-mcp Python package exposed local tools through a covert MCP tunnel
A lookalike Python dependency imported an unauthorized MCP command executor and connected it to an attacker-controlled Cloudflare tunnel, turning an AI-tool integration into a remote access surface.
Public disclosure: Nov 7, 2026
Python environments importing the identified malicious dynamic-mcp distribution. The core AI-specific exposure is the covert MCP service plus an outward tunnel, not every conventional lookalike package described by the researchers.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- AI role
- AGAINST AI
Basis and provenance
Desk assessment of cited firsthand report and scope limits; quantitative denominators describe only the reporter's stated sample. No independent live exploitation or universal impact is inferred.
Assessed Nov 11, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-R236-DYNAMIC-MCP-PYPI-REVERSE-TUNNEL-01 · CLM-R236-DYNAMIC-MCP-PYPI-REVERSE-TUNNEL-02 · Corgea: malicious dynamic-mcp and related PyPI impersonation packages · OpenSSF malicious package records: dynamic-mcp family
At a glance
Dependency trust is a separate enforcement boundary from an agent prompt. A compromised package can install its own tools and network access even if every language-model instruction looks ordinary.
Read the implicationsNo confirmed customer victim, command history from a compromised production machine or downstream actor attribution was established. Do not equate the package label MCP with a legitimate server maintained by the Model Context Protocol project. Whether any named downstream host executed an attacker-supplied command through a discovered tunnel; the…
Limits and uncertaintyFull account
The dynamic-mcp PyPI artifact presented itself as useful MCP integration code. The package automatically opened an unauthenticated local service and used Cloudflared to establish an outbound tunnel reachable through an attacker-controlled rendezvous address. The public tunnel behavior was present since the earliest reviewed distribution, while the arbitrary shell-execution method was added in version 1.0.4. The source record does not support attributing that specific shell capability to every earlier version. This is different from a prompt telling a model to misuse an otherwise authorized tool: executable third-party package code created a new unauthorized control surface before any meaningful agent decision was necessary.
Corgea analyzed the package family, associated command-execution methods and related suspicious PyPI names. Additional Earth Engine-themed packages in the same report attempted OAuth credential collection, but their relationship to the MCP tunnel does not establish a common post-install intrusion or the same victims. A known malicious package and declared behavior are not evidence of a measured infection count, data loss or live remote access into any identified user environment.
Python environments importing the identified malicious dynamic-mcp distribution. The core AI-specific exposure is the covert MCP service plus an outward tunnel, not every conventional lookalike package described by the researchers.
No confirmed customer victim, command history from a compromised production machine or downstream actor attribution was established. Do not equate the package label MCP with a legitimate server maintained by the Model Context Protocol project.
The attacker-controlled dependency exploited the installation/import boundary, not a successful prompt-injection dialog. Corgea describes dynamic-mcp package releases 0.2.0 through 1.0.9 opening a local MCP surface and an outbound Cloudflare Quick Tunnel, then publishing the tunnel address to a remote service. OpenSSF’s source review confirms that bash -c execution became available from 1.0.4 rather than the first release. A connection initiated outward can bypass assumptions that a lack of inbound firewall ports makes the process unreachable.
The same report covers unrelated-looking packages targeting Earth Engine OAuth and Xinference. Their co-occurrence in one research article is not proof that one infected host ran every payload or that the operators were identical. A responsible response to a verified installation is to inventory Python environments and the actual import path, isolate outbound tunneling and rotate relevant process-accessible credentials; mere appearance of a package in a dependency file does not establish execution or victim losses.
Mechanism and trust boundary
- 01
Install and import package
Developer or agent runtime loads the malicious Python dependency in a trusted environment.
Boundary: package registry / application process
- 02
Spawn unauthorized MCP command server
Package import creates additional tools with process-level shell authority.
Boundary: dependency code / local tool service
- 03
Expose service through outbound tunnel
Cloudflared connects local command capability to an external listener.
Boundary: local MCP service / remote attacker
Claims & evidence
CLM-R236-DYNAMIC-MCP-PYPI-REVERSE-TUNNEL-01The dynamic-mcp package family opened an unauthenticated service and outward Cloudflare Quick Tunnel by default across its reported versions, but the command-capable `bash -c` tool was present from version 1.0.4 onward.supported
Basis: reported finding
- supportsCorgea: malicious dynamic-mcp and related PyPI impersonation packagesprimary disclosure
Corgea November 7 research, dynamic-mcp default reverse-connection section and version range
- supportsOpenSSF malicious package records: dynamic-mcp familyindependent technical reproduction
OpenSSF PR 1748 description: tunnel active since first distribution, command execution introduced in 1.0.4 on July 25, 2026
CLM-R236-DYNAMIC-MCP-PYPI-REVERSE-TUNNEL-02The campaign is documented as malicious distribution research; actual victim counts and attacker-executed production commands were not independently established.supported
Basis: reported finding
- supportsOpenSSF malicious package records: dynamic-mcp familyindependent technical reproduction
OpenSSF malicious-packages review and linked package evidence
Implications
Dependency trust is a separate enforcement boundary from an agent prompt. A compromised package can install its own tools and network access even if every language-model instruction looks ordinary.
Controls and mitigations
- Block and remove the malicious distribution, inspect import-time side effects, local MCP listeners and Cloudflared processes in previously affected environments.
- Resolve package dependencies by exact project and publisher identity, pin artifacts and scan executable setup/import behavior before installation.
- Grant MCP clients and agent runtimes only explicit reviewed servers; deny ad hoc outbound tunnel creation by dependency code.
Unknowns and contradictions
- No confirmed customer victim, command history from a compromised production machine or downstream actor attribution was established. Do not equate the package label MCP with a legitimate server maintained by the Model Context Protocol project.
- Whether any named downstream host executed an attacker-supplied command through a discovered tunnel; the open-source malicious-package records alone do not supply confirmed victim telemetry.
Sources and citation
Material revision history
- Nov 11, 2026 · Published version · first publication · revision 239