T09 · Insecure Skill Coding Practices
- Location
scripts/check_stream.py:101- Finding
Unvalidated Stream URLs Enable Blind Server-Side Request Forgery
- Content
View full analysis
= 4: cmd_add(args[1], args[2], args[3], args[4] if len(args) > 4 else "unknown") ``` The availability checker subsequently submits every persisted stream URL for parallel processing: ```python future_to_idx = { executor.submit( check_stream_adaptive, s["url"], s.get("bitrate") ): i for i, s in check_map.items() } ``` The shared checker performs the resulting request without destination validation: ```python try: req = urllib.request.Request(url, headers=headers) with urllib.request.urlopen(req, timeout=timeout) as resp: while True: ``` ### Technical Analysis There is no allowlist or validation between URL ingestion and the network request. A URL stored through `cli.py add`, inserted into `state.json`, or obtained from externally controlled station-directory content can therefore target: - Loopback addresses such as ...[truncated 2840 chars]- Remediation
View remediation
