Tainted flow: 'audio_url' from os.getenv (line 109, credential/environment) → urllib.request.urlopen (network output)
Critical
- Category
- Data Flow
- Content
def download_audio(audio_url: str, output_path: Path) -> None: output_path.parent.mkdir(parents=True, exist_ok=True) with urllib.request.urlopen(audio_url) as response: output_path.write_bytes(response.read())- Confidence
- 92% confidence
- Finding
- The script downloads whatever URL is returned in `response.output.audio.url` using `urllib.request.urlopen` without validating the scheme, host, or destination. Because the request also allows a user-supplied `base_url`, an attacker who can influence the API endpoint or its response can turn this into server-side request forgery or arbitrary network access, and the downloaded bytes are then written to disk.
