Tainted flow: 'req' from os.environ.get (line 36, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
method="POST", ) try: with urllib.request.urlopen(req, timeout=30) as resp: return json.loads(resp.read().decode()) except urllib.error.HTTPError as e: body = e.read().decode()- Confidence
- 95% confidence
- Finding
- The CLI builds its destination URL from the MCP_SERVER_URL environment variable and then sends requests to it, including sensitive trading commands and, in setup flows, exchange API credentials. Because the default scheme is plain HTTP and there is no validation or allowlist on the endpoint, a modified environment can redirect secrets and trading actions to an attacker-controlled service or over an unencrypted channel.
