Tainted flow: 'req' from os.environ.get (line 67, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
headers={"Content-Type": "application/json"}, method="POST", ) with urllib.request.urlopen(req, timeout=30) as resp: return json.loads(resp.read().decode("utf-8"))- Confidence
- 92% confidence
- Finding
- API_BASE is taken from the CHANJING_API_BASE environment variable and used to send app_id and secret_key to /open/v1/access_token. If an attacker can influence the environment, they can redirect credential submission to an arbitrary host and exfiltrate the secret key; the skill context increases risk because this file handles long-lived API credentials.
