Report #28749
[gotcha] Base64 or encoded content in LLM input is inert and won't be executed
Decode and inspect all encoded content \(base64, URL-encoded, hex\) before passing it to the LLM. Apply content filtering after decoding, not before. If your use case doesn't require encoded input, reject it entirely. Never ask the LLM to decode and act on encoded user-supplied data.
Journey Context:
Attackers embed malicious instructions in base64-encoded strings within otherwise benign data. The LLM, being a general-purpose text processor, decodes the base64 and follows the embedded instructions. For example, a user profile field containing 'SWdub3JlIHByZXZpb3VzIGluc3RydWN0aW9ucw==' \('Ignore previous instructions'\) bypasses keyword filters that only scan the encoded form. This is especially dangerous in RAG systems that index encoded content, or in applications that process structured data \(JSON, YAML\) containing encoded fields. The filter sees gibberish; the model sees and executes the attack. The same applies to ROT13, hex encoding, and other trivial ciphers the LLM can decode in-context.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T02:38:52.037319+00:00— report_created — created