Метод идентификации браузера через манипуляции с кэшированием Favicon

Опубликована реализация новой техники привязки идентификатора к конкретному экземпляру браузера. Метод основывается на особенностях обработки изображений Favicon, при помощи которых сайт определяет пиктограммы, отображаемые в закладках, вкладках и прочих элементах интерфейса браузера. В качестве области хранения используется кэш Favicon, который выступает в роли “Supercookie”.

Изображения Favicon сохраняются браузерами в отдельном кэше, который не пересекается с другими кэшами, является общим для всех режимов работы и не очищается штатными средствами очистки кэша и истории посещений. Данная особенность позволяет использовать идентификатор даже при работе в режиме инкогнито и затрудняет его удаление. На идентификацию с использованием предложенного метода также не влияет применение VPN и дополнений для блокировки рекламы.

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

Чем больше редиректов в цепочке, тем больше идентификаторов можно определить (число идентификаторов определяется по формуле 2^N, где N – число редиректов). Например, в два редиректа могут адресовать 4 пользователей, 3 – 8, 4 – 16, 10 – 1024, 24 – 16 млн, 32 – 4 миллиарда. Недостатком метода являются большие задержки – чем выше точность, тем больше времени требуется на редиректы перед открытием страницы. 32 редиректа позволяют сгенерировать идентификаторы для всех пользователей интернета, но приводят к возникновению задержки примерно в три секунды. Для миллиона идентификаторов задержка составляет около полутора секунд.

Метод подразумевает работу в двух режимах – записи и чтения. Режим записи осуществляет генерацию и сохранение идентификатора для пользователя, впервые обратившегося к сайту. Режим чтения осуществляет чтение ранее сохранённого идентификатора. Выбор режима зависит от запроса файла Favicon для основной страницы сайта – если картинка запрошена, значит данные не прокэшированы и можно предположить, что пользователь не обращался к сайту ранее или содержимое кэша устарело. По данным исследователей, через указание HTTP-заголовка Cache-Control можно добиться нахождения Favicon в кэше сроком до одного года.

В режиме чтения при открытии сайта пользователь по цепочке перенаправляется на предопределённые страницы со своими Favicon (например, “demo.supercookie.me/t/50fd23e6:9bpZVrAwOmieUkMPkAeG”), а HTTP-сервер анализирует, какие из Favicon запрошены с сервера, а какие показаны без обращения к серверу из кэша. Наличие запроса кодируется как “0”, а отсутствие, как “1”. Для того, чтобы идентификатор сохранился и при будущих обращениях, в ответ на запросы Favicon выводится 404 код ошибки, т.е. при следующем открытии сайта браузер попытается загрузить эти Favicon вновь.

В режиме записи в цикле редиректов для страниц, кодирующих “1”, выдаётся корректный ответ с Favicon, оседающий в кэше браузера (при повторном прохождении цикла данные Favicon будут отдаваться из кэша, без обращения к серверу), а для страниц кодирующих “0” – 404 код ошибки (при повторном цикле редиректа данные страницы будут запрошены вновь).

Метод работает в Chrome, Safari, Edge и частично в Firefox. В Firefox для Linux использованию Favicon в качестве Supercookies мешает особенность, из-за которой браузер вообще не кэширует Favicon. Интересно, что авторы метода идентификации уведомили разработчиков Firefox о данной особенности около года назад, указав на наличие ошибки в работе кэша, но не упомянув о своей работе и о том, что исправление ошибки приведёт к возможности идентификации пользователей. Дополнительно можно напомнить, что начиная с Firefox 85 в браузер добавлен режим сегментирования сети (Network Partitioning), позволяющий блокировать методы отслеживания перемещений, манипулирующие извлечением информации из различных браузерных кэшей. Проверить подверженность браузера предложенному методу идентификации можно на данной странице.

А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *