Tainted flow: 'markdown_url' from requests.post (line 131, network input) → requests.get (network output)
Medium
- Category
- Data Flow
- Content
if download_result: markdown_url = result.get("result", {}).get("markdown_url") if markdown_url: md_resp = requests.get(markdown_url, timeout=60) md_resp.encoding = "utf-8" result["markdown"] = md_resp.text parse_result_url = result.get("result", {}).get("parse_result_url")- Confidence
- 96% confidence
- Finding
- The code trusts `markdown_url` returned by the remote OCR service and performs a follow-up `requests.get` without validating scheme, host, or destination. If the upstream service is compromised, misconfigured, or attacker-influenced, this creates an SSRF primitive that can make the runtime fetch arbitrary URLs, including internal metadata or private network resources.
