Tainted flow: 'data' from requests.get (line 97, network input) → requests.post (network output)
Medium
- Category
- Data Flow
- Content
} api_base = config.get("llm_api_base") try: resp = requests.post(f"{api_base}/chat/completions", headers=headers, json=data, timeout=60) resp.raise_for_status() result = resp.json() content = result["choices"][0]["message"]["content"]- Confidence
- 94% confidence
- Finding
- The code sends paper metadata and abstracts gathered from external APIs directly into an LLM prompt and then transmits that prompt to a configurable external endpoint. This creates a real tainted-data exfiltration path and enables prompt-injection-through-retrieved-content: malicious or sensitive text embedded in abstracts can be forwarded to the model, and changing llm_api_base can direct that data to an arbitrary server.
