Tainted flow: 'req' from os.environ.get (line 323, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
"Content-Type": "application/json", } ) with urllib.request.urlopen(req, timeout=30) as resp: result = json.loads(resp.read()) content = result["choices"][0]["message"]["content"] return parse_and_validate(content)- Confidence
- 83% confidence
- Finding
- The OpenClaw/Minimax fallback constructs the request URL from environment- or argument-controlled base_url and then sends both the conversation prompt and bearer token to that endpoint. If an attacker can influence LLM_BASE_URL or MINIMAX_BASE_URL, they can redirect sensitive conversation data and credentials to an arbitrary server, turning configuration into exfiltration.
