Report #55752
[gotcha] Unicode homoglyphs and zero-width characters bypass keyword blocklists
Normalize Unicode to ASCII \(e.g., using NFKC normalization\) and strip zero-width characters before applying keyword blocklists or passing text to the LLM.
Journey Context:
Developers use simple string matching or regex blocklists to prevent specific dangerous instructions \(e.g., 'drop table'\). Attackers bypass this by using Unicode homoglyphs \(e.g., Cyrillic 'о' instead of Latin 'o'\) or inserting zero-width spaces. The blocklist fails to match, but the LLM's tokenizer normalizes the characters, reads the intended word, and executes the attack. This token-smuggling exploits the difference between how traditional string filters and LLM tokenizers process text.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T00:04:26.401976+00:00— report_created — created