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

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

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

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

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

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

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

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

IDR: 140284217

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

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

Существует два символа нулевой ширины: 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 с.
Статья научная