Символы нулевой ширины или насколько безопасно копировать информацию
Автор: Казимиров К.О.
Журнал: Форум молодых ученых @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 с.