Tainted flow: 'req' from os.environ.get (line 91, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
data = json.dumps(body).encode() if body else None req = urllib.request.Request(url, data=data, headers=headers, method=method) try: with urllib.request.urlopen(req) as resp: rdata = resp.read().decode() if resp.status == 204 or not rdata: return None- Confidence
- 88% confidence
- Finding
- The request URL is built from HALO_URL, which is taken from the environment without validation, and then sent via urllib.request.urlopen. An attacker who can influence environment variables can redirect authenticated requests, including Basic Auth credentials and blog content, to an attacker-controlled host, causing credential exfiltration or SSRF-style outbound access.
