Комментарии 23
Практическое применение сомнительно - слишком просто обнаруживается и вырезается, plausible deniability как в случае со стеганографией отсутствует.
Практическое применение -- обход проверки на длину строки, чтобы вызвать buffer overflow или просто стриггерить DoS вызванный медленной обработкой данных
Это как должна быть реализована проверка длины строки, чтобы ее можно было таким образом обойти?
Использовать длину в символах вместо длины в байтах... :)
Там, чтобы при обрезании не получать поломанных символов...
Не, ну если складывать метры с килограммами, то и не такое можно наворотить. Обычно получить количество байт гораздо проще, чем число видимых символов - из известных мне языков только Python делает наоборот. Другое дело, что с такой логикой всё сломается гораздо раньше - с первым символом, кодируемым более чем одним байтом. Скрытые символы ситуацию не ухудшат.
Ну а с точки зрения DoS или увеличения времени обработки они, кажется, не более опасны, чем если добавить в текст много пробелов.
В Python не прокатит.

Собственно, см. ниже :))
Как у мелкомягких, была проблема с длиной строки, после длительного пробела, который весь не отображался в окне, стояло расширение, которое, в свою очередь, тоже не было видно. Визуально вычислить вредоносный файл не было возможности.
Удивило, насколько такие экзотические кейсы обработки юникода тем не менее поддерживаются софтом. Покопировал этот смайлик туда-сюда через несколько разных приложений - везде скрытые символы сохраняются. Но не везде остаются скрытыми. Скажем, MS Word показывает смайлик и 4 прямоугольника-плейсхолдера, а WhatsApp Desktop - прямоугольник и два очень длинных пробела.
Интересно, Юникод еще не Тьюринг-полный, или уже?
Некоторые медиаторы (мессенджеры, форумы и т. п.) просто вырежут странные внедрения в юникод (возможно, это санация против попыток взлома).
Наверное, чем-то таким занимался бы Ленин вместо письма молоком, если бы тот рассказ написали веком позже.
Ох, как же на днях меня текст с эмодзи выбесил... Делаешь len(text) в python - ровно 255 символов. Вставляешь в Microsoft SQL Server в поле nvarchar(255), и ловишь ошибку переполнения буффера...
Вставил в пуск-выполнить. Да, очень скрытые символы. Блокнот тоже красиво рисует.
Никогда не думал, что буду с ностальгией вспоминать времена 437, 866, 1251 и 8859, когда с кодировками все было так просто, понятно и безопасно.
Там, на HN, была ещё одна интересная ссылка: https://github.com/KuroLabs/stegcloak
шифрование скрытой полезной нагрузки с помощью AES-256-CTR
У вас в https://github.com/KuroLabs/stegcloak  затесался, и ссылка побилась. Или это шутка юмора была?

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