Tainted flow: 'req' from urllib.request.urlopen (line 861, network input) → urllib.request.urlopen (network output)
Medium
- Category
- Data Flow
- Content
# Step 2: Get hourly forecast try: req = Request(hourly_url, headers=headers) resp = urlopen(req, timeout=10) data = json.loads(resp.read()) periods = data["properties"]["periods"] except Exception as e:- Confidence
- 84% confidence
- Finding
- The code blindly follows the forecastHourly URL supplied by the first NOAA response and performs a second outbound request without host allowlisting. If the upstream response were compromised, intercepted in a hostile environment, or an unexpected redirect/data issue occurred, this could turn into unintended outbound access to attacker-controlled infrastructure.
