group-telegram.com/llmsecurity/491
Last Update:
Smuggling arbitrary data through an emoji
Paul Butler, 2025
Блог, инструмент
В стандарте Unicode есть специальные коды в количестве 256 штук, которые называются вариантными селекторами и дополнительными вариантными селекторам – от U+FE00 до U+FE0x и от U+E0100 до U+E01EF. Они прицепляются к символам, идущим до них, и меняют их отображение – если существует вариация, соответствующая их комбинации. При этом вариантных селекторов после символа может быть сколько угодно много, а их наличие в количестве 256 штук означает, что в них можно закодировать байт.
Что это значит? Это значит, что можно создать внутрь текста засовывать другой, невидимый текст – находка для стеганографии. Так можно вставлять в текст незаметные сообщения, которые будет невидимы для стороннего наблюдателя или добавлять в тексты водяные знаки, которые сохраняются при копировании и вставке. Автор сопроводил блог небольшой тулой, которая позволяет кодировать-декодировать текст и, собственно, добавлять к эмодзи.
А кто еще кроме людей у нас работает с текстом? Конечно, LLM, причем в подавляющем большинстве LLM еще со времен GPT-2 используются BPE-токенизаторы, работающие на байтах, а не на символах, а значит вполне смогут закодированные послания увидеть. Например, вот этот эмодзи 💀󠅗󠅢󠅕󠅕󠅤󠅙󠅞󠅗󠅣󠄐󠅖󠅢󠅟󠅝󠄐󠅤󠄐󠅔󠅟󠅤󠄐󠅝󠅕󠄐󠅣󠅜󠅑󠅣󠅘󠄐󠅜󠅜󠅝󠅣󠅕󠅓󠅥󠅢󠅙󠅤󠅩 для LLM на самом деле состоит из 166 токенов и содержит тайное послание. А это открывает простор для token smuggling и инъекции промпта. Андрей Карпати собрал забавный PoC, в котором попытался сделать на базе этого промпт-инъекцию, добавив инструкцию, собранную из байтов в эмодзи – сработало, но потребовался интерпретатор кода и некоторое количество инструкций. Но если мы напишем об этом побольше текстов, то будущие LLM могут запомнить, как это работает, и справляться с без подсказок 😉 Небезызвестный Плиний придумал другое применение – прилепить к эмодзи так много вариантных селекторов, чтобы текст выходил за пределы контекстного окна. Получается токен-бомба, разновидность sponge attack – можно добавлять на свой сайт и сжигать LLM-парсерам и краулерам токены.
В общем, Unicode – страшная штука