Tainted flow: 'req' from os.environ.get (line 31, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
headers = {"Content-Type": "application/json", "X-Proxy-Token": PROXY_TOKEN} req = urllib.request.Request(PROXY_URL, data=payload, headers=headers, method="POST") try: with urllib.request.urlopen(req, timeout=timeout) as resp: return json.loads(resp.read().decode("utf-8")) except (socket.timeout, TimeoutError): return {"ok": False, "error": "timeout"}- Confidence
- 94% confidence
- Finding
- The request target and authentication header are both sourced from environment-controlled values, and the code sends user query parameters plus the proxy token to whatever URL is configured in PROXY_URL. If that environment variable is changed to an attacker-controlled endpoint, the token and request data are exfiltrated and the skill's network trust boundary is broken.
