Tainted flow: 'req' from os.environ.get (line 1349, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
headers = {"Authorization": "Bearer " + require_key(), "User-Agent": user_agent()} try: req = urllib.request.Request(url, headers=headers, method="GET") with urllib.request.urlopen(req, timeout=TIMEOUT_SEC) as resp: note_release(resp.headers) ctype = resp.headers.get("Content-Type", "") body = resp.read()- Confidence
- 80% confidence
- Finding
- The export/download path sends the Bearer API key to whatever host base_url() resolves to, and base_url() can be redirected through environment variables when ARI_ALLOW_CUSTOM_BASE=1 is set. Although this is an intentional development override, it still creates a real credential-exfiltration risk in compromised shells, CI environments, or wrapper processes because authenticated export requests may be silently sent to attacker-controlled infrastructure.
