Tainted flow: 'req' from os.environ.get (line 69, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
) try: with urllib.request.urlopen(req, timeout=timeout) as resp: data = json.loads(resp.read()) except urllib.error.HTTPError as e: err_body = e.read().decode("utf-8", errors="replace")[:500]- Confidence
- 96% confidence
- Finding
- The request target is derived from `base_url`, which can come from `os.environ['OFOX_BASE_URL']` or a caller-supplied argument, and is then used directly in `urllib.request.urlopen` while sending the bearer token and full prompt. If an attacker can influence that value, they can redirect traffic to an arbitrary host and exfiltrate credentials and sensitive prompt content; in this content-generation skill, prompts may include brand strategy, product details, and internal creative guidance, which increases the sensitivity.
