Tainted flow: 'audio_url' from requests.post (line 167, network input) → requests.get (network output)
Medium
- Category
- Data Flow
- Content
audio_url = query_data.get("data", {}).get("audio_url") if not audio_url: raise ValueError(f"Volcengine TTS query missing audio_url: {query_data}") audio_response = requests.get(audio_url, timeout=120) audio_response.raise_for_status() output_path.write_bytes(audio_response.content) return- Confidence
- 95% confidence
- Finding
- The code retrieves an audio_url from a remote API response and immediately performs requests.get on it without validating the scheme, host, or address class. If the upstream service is compromised, misconfigured, or attacker-influenced, this creates an SSRF primitive that could be used to make the agent access internal services, cloud metadata endpoints, or unexpected external hosts.
