Tainted flow: 'req' from os.environ.get (line 1459, 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
- 65% confidence
- Finding
- The export/download path sends an Authorization bearer token to whatever base_url() returns, and in custom-base mode the destination can be environment-controlled. Although the code requires ARI_ALLOW_CUSTOM_BASE=1, once enabled a malicious or compromised shell/session can redirect credentialed downloads to an attacker-controlled host, exposing the API key and any exported data.
