Tainted flow: 'url' from os.environ.get (line 139, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
""" url = f"{API_BASE_URL}{API_PATH}?{urllib.parse.urlencode({**params, 'appkey': appkey})}" try: with urllib.request.urlopen(url, timeout=15) as response: return json.loads(response.read().decode("utf-8")) except urllib.error.HTTPError as exc: return {"code": exc.code, "message": f"接口请求失败: HTTP {exc.code}", "data": ""}- Confidence
- 91% confidence
- Finding
- The request URL is built from `API_BASE_URL`, which can be overridden via the `JIKE_API_BASE_URL` environment variable, and then sent with the secret `appkey` in the query string. If an attacker can influence the environment, they can redirect requests to an arbitrary host and capture the AppKey and user query data, effectively turning this into exfiltration/SSRF-like behavior within the skill runtime.
