Tainted flow: 'req' from os.environ.get (line 144, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
req = urllib.request.Request(url, data=body, headers=headers, method=method) try: with urllib.request.urlopen(req, timeout=30) as response: text = response.read().decode() if not text: return {}- Confidence
- 93% confidence
- Finding
- The request destination is influenced by BUTTONDOWN_API_BASE from the environment, and the code will send the Authorization token header to whatever URL that variable specifies. In an agent/runtime setting where environment configuration may be influenced by deployment or other tooling, this creates an SSRF-style credential exfiltration risk because a malicious base URL could capture the Buttondown API key and request contents.
