Как стать автором
Обновить

Контрабанда данных внутри эмодзи

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров15K
Всего голосов 59: ↑58 и ↓1+77
Комментарии23

Комментарии 23

Практическое применение сомнительно - слишком просто обнаруживается и вырезается, plausible deniability как в случае со стеганографией отсутствует.

Практическое применение -- обход проверки на длину строки, чтобы вызвать buffer overflow или просто стриггерить DoS вызванный медленной обработкой данных

Это как должна быть реализована проверка длины строки, чтобы ее можно было таким образом обойти?

Использовать длину в символах вместо длины в байтах... :)
Там, чтобы при обрезании не получать поломанных символов...

Не, ну если складывать метры с килограммами, то и не такое можно наворотить. Обычно получить количество байт гораздо проще, чем число видимых символов - из известных мне языков только Python делает наоборот. Другое дело, что с такой логикой всё сломается гораздо раньше - с первым символом, кодируемым более чем одним байтом. Скрытые символы ситуацию не ухудшат.

Ну а с точки зрения DoS или увеличения времени обработки они, кажется, не более опасны, чем если добавить в текст много пробелов.

Как у мелкомягких, была проблема с длиной строки, после длительного пробела, который весь не отображался в окне, стояло расширение, которое, в свою очередь, тоже не было видно. Визуально вычислить вредоносный файл не было возможности.

Удивило, насколько такие экзотические кейсы обработки юникода тем не менее поддерживаются софтом. Покопировал этот смайлик туда-сюда через несколько разных приложений - везде скрытые символы сохраняются. Но не везде остаются скрытыми. Скажем, MS Word показывает смайлик и 4 прямоугольника-плейсхолдера, а WhatsApp Desktop - прямоугольник и два очень длинных пробела.

Интересно, Юникод еще не Тьюринг-полный, или уже?

Он уже, кажется, может тест Тьюринга пройти (в отличие от его создателей).

Некоторые медиаторы (мессенджеры, форумы и т. п.) просто вырежут странные внедрения в юникод (возможно, это санация против попыток взлома).

Проверил в телеге. Отправил и оно даже преобразовало смайлик в анимашку. Выбирал и в режимередактирования и без редактирования полное сообщение копировал. Вставил в декодер - увидел свой текст.

Ох, как же на днях меня текст с эмодзи выбесил... Делаешь len(text) в python - ровно 255 символов. Вставляешь в Microsoft SQL Server в поле nvarchar(255), и ловишь ошибку переполнения буффера...

Никогда не думал, что буду с ностальгией вспоминать времена 437, 866, 1251 и 8859, когда с кодировками все было так просто, понятно и безопасно.

Я бы сказал, что РІ те времена РЅРµ РІСЃС‘ РїСЂСЏРј так хорошо было.

:) лучше и не сказать.
Даа, время Shtirlitz минуло с приходом UTF8. Однако, все еще в запасах держу сей инструмент, иногда пригождается.

оХГДЕЖ!

Да, но... В Notepad++ "спрятанные" символы видно очень бытсро. Соответственно всякие DLP будут находить подобные утечки

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации