Символы нулевой ширины или насколько безопасно копировать информацию

Автор: Казимиров К.О.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 9 (25), 2018 года.

Бесплатный доступ

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

Безопасность, кодирование, утечка информации, нулевые символы

Короткий адрес: https://sciup.org/140284217

IDR: 140284217

Zero-width characters or how safe it is to copy information

The article is devoted to symbols of zero width. The article considers how to use the hidden symbols to encode information in the text. Information encoded in the text can be decoded and find out the necessary information. The article considers an example of searching for a link of information leakage.

Текст научной статьи Символы нулевой ширины или насколько безопасно копировать информацию

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

Существует два символа нулевой ширины: Zero Width No-break Space (U+2060) и Zero Width Space (U+206B). С помощью двух символов мы можем закодировать любую информацию: логин пользователя, дату и время просмотра, его ip адрес. Приведём код для демонстрации всего этого на языке PHP.

5 б

function encode($str){ for($i=0;$i

$bin=Sbin. decbin (ord.($str [$i] ) };

Steirp = str_replace ( ' 0 ', ’ £#3206; 1 , $str i ;

$ten.p = str_replace ( ' 1', ' £#8207; ' , $ten.p) ;

return Sten.p;

Рис. 1. Функция кодирования

Создадим функцию encode, в которую будем передавать информацию для кодирования. Данная функция кодирует каждый символ информации для кодирования в двоичный вид с помощью встроенной в PHP функции decbin, затем добавляет закодированный символ в строку “bin”. После кодирования всех символов строки мы получаем строку содержащую «0» и «1». Следующем шагом мы заменяем 0 на символ нулевой ширины «#8206», а 1 заменяем на «#8207». Возвращаем данную строку обратно с помощью return. Повторюсь, что в данную функцию можно передать любую информацию от версии браузера до геолокационных данных, и пользователь даже не заметит это.

Теперь только остаётся найти нашу секретную информацию в открытым доступе скопировать текст и провести декодирование.

Приведём код для демонстрации декодирования на языке PHP.

function decade (Sstr) {

Sa = strripos(Sstr,"£#8204; ") ;

$b = strripos($str, "£#8205; ") ;

if (Sa

$a4— ;

Stenp = substr(Sstr,0,Sa);

Stemp = str_replace('£#8206;0',Stenp) ;

Sterup = str_rieplace (1 £#8207; 1 , 111 , Stenp) ;

Sresult = "";

for (Si-0; SKstrlen (Stenip) ; $i++)

Рис. 2. Функция декодирования

Создадим функцию декодирования decode, в неё будем передавать наш текст, который требуется декодировать. В начале определим где начинается закодированая информация, после чего происходит обратный процесс кодированию, символы «8206» заменяется на 0, а «8207» на 1 соответственно. Следующий шаг перевод информации из двоичного вида и возвращение результата.

Информация которая будет закодирована ^177ХШ1

Текст показанный пользователю

Вставить скопированный текст

Закодированная информация

Рис. 3. Демонстрация

Для демонстрации данной уязвимости была реализована веб-страница, включающая в себя выше описанные функции. Вверху вводится информация которую необходимо закодировать, в нашем случае это будет текст «IP:127.0.0.1». Следующим шагом мы копируем текст «В простом тексте может быть информация о вас», и размещаем его в поле для вставки. После чего происходит декодирование информации в тексте и результат выводится в низу страницы «IP:127.0.0.1».

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

Список литературы Символы нулевой ширины или насколько безопасно копировать информацию

  • Березюк Н. Т., Андрущенко А. Г., Мощицкий С. С. и др. Кодирование информации (двоичные коды). Харьков, издательское объединение "Вища школа", 1978, 252 с.