Tainted flow: 'download_url' from open (line 153, file read) → urllib.request.urlopen (network output)
High
- Category
- Data Flow
- Content
except (json.JSONDecodeError, UnicodeDecodeError) as e: return None, f"invalid asset json: {e}" try: with urllib.request.urlopen(download_url, timeout=120) as resp: data = resp.read() if not mime: mime = resp.headers.get("Content-Type", "")- Confidence
- 93% confidence
- Finding
- The script retrieves JSON from the asset API and then fetches the returned `url` directly, with no validation of scheme, hostname, or whether it resolves to internal addresses. That means a malicious or compromised API response could coerce the tool into making arbitrary outbound requests, enabling SSRF, internal network probing, or retrieval of sensitive local-network resources.
