Tainted flow: 'req' from os.environ.get (line 150, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
input_params_for_return = payload try: with urllib.request.urlopen(req) as response: res_json = json.loads(response.read().decode("utf-8")) print("[seedream] response:", json.dumps(res_json, ensure_ascii=False))- Confidence
- 96% confidence
- Finding
- The request destination is derived from the environment via SEEDREAM_BASE_URL, and the code then sends the Authorization bearer token to that URL with urllib.request.urlopen(). If an attacker can influence the environment or deployment configuration, they can redirect requests to an attacker-controlled endpoint and exfiltrate the API key; this is especially risky because the skill also uploads base64-encoded local image contents to the same endpoint.
