Tainted flow: 'req' from os.getenv (line 178, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
req = urllib.request.Request(url=url, method=op["method"], headers=req_headers, data=data) try: with urllib.request.urlopen(req, timeout=timeout) as resp: raw = resp.read().decode("utf-8") try: payload = json.loads(raw) if raw else None- Confidence
- 93% confidence
- Finding
- The request destination and authorization material are influenced by environment variables, especially SCRUMBALL_BASE_URL and SCRUMBALL_API_KEY, and the code sends them directly over the network. In a skill context, this enables exfiltration of API credentials and request data to an attacker-controlled endpoint if the environment or .env source is manipulated, which is a real security issue even though it is framed as configuration.
