Куки без куки (Cookieless Cookies)

в 22:28, , рубрики: Без рубрики

imageПродолжаем месячник анонимности на Хабре. Перевод статьи об отслеживании пользователя а-ля Cookie без использования Cookie (но с сохранением данных). Технология не нова, но, вроде, не публиковалась, прошу сильно не пинать. Перевод — скорее адаптация и не претендует на побайтную точность. Статья не из категории «Шок! Скандалы-Интриги-Расследования!», а просто довольно достойное чтиво — enjoy!

Существует вариант отслеживания пользователей без использования Cookies или Javascript. Этот способ уже используется приличным количеством сайтов, но мало кто о нем знает. Данный материал — о том, как это работает и как можно защититься.

Метод работает без использования всего нижеперечисленного

  • Cookies
  • Javascript
  • LocalStorage/SessionStorage/GlobalStorage
  • Flash, Java или других плагинов
  • Вашего IP-адреса или строки User Agent
  • Любых методов, используемых Panopticlick

Вместо этого, используется другое хранилище, которое обычно переживает рестарт браузера — кеш. Так что если вы отключили Cookies, заблокировали JS и сидите через VPN — вас всё равно можно отследить.

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

В статье используется демонстрация с формой, которую вкрутить на Хабр не видится возможным (если я неправ — плз дайте знать), поэтому здесь вам понадобится открыть оригинал Нет, это не албанский вирус :)

Пока вы это читаете, нам нужно признаться. Мы вас уже посчитали. Сорри. Хорошая новость: мы не привязываем идентификатор вашей сессии к какой-либо персональной информации. Вот всё, что мы о вас знаем прямо сейчас:

  • Количество посещений
  • Последнее время визита
  • Произвольный текст

Попробуйте поиграться — вбейте какой-нибудь текст, нажмите «Store», закройте браузер, откройте и вернитесь на эту же страницу. Всё еще на месте? [Примечание: русский текст обрабатывается замысловатым образом :) ] Проверьте Cookies: есть что-то? Нет — всё хранится в фейковой контрольной сумме картинки, о которой никто не задумывается. Видели глаз вверху страницы? Он там не для красоты — это наш трекер.

И как это работает?

В целом, так:
image

ETag, показанный на картинке — это нечто вроде контрольной суммы. Когда изображение изменяется — меняется и сумма. Так что, если у браузера уже есть картинка и ее контрольная сумма, он может послать ее web-серверу для проверки. Сервер проверяет сумму, и если она совпадает (картинка не изменилась) — просто не отправляет картинку, экономя таким образом полосу пропускания (и время) себе и клиенту.

И тут внимательный читатель понимает, что это может использоваться для отслеживания: браузер шлет серверу некую информацию, прежде полученную от этого самого сервера (ETag). Выглядит прямо как Cookies, нет? Сервер может просто выдавать каждому браузеру уникальный ETag, а при повторном соединении — подсматривать его в базе данных.

Технические подробности (и косяки) именно этого демо

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

Имеем логическую закольцовку типа «курица-или-яйцо?», что приводит к некоторым, хм, особенностям:

  • Информация, которую вы видите, на самом деле относится к вашему предыдущему посещению. Нажмите F5, чтобы увидеть актуальные данные.
  • Если вы откроете страницу в режиме, которые не передает ETag (а-ля Incognito Mode в Chrome) — ничего не отобразится. Но как только вы снова откроете страницу в нормальном режиме — всё вернется.

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

Исходники

Что же за проект без исходников? А, да, Microsoft Windows
github.com/lucb1e/cookielesscookies

И как с этим бороться?

Рекомендованный метод прост: если вы собираетесь посетить страницу, на которой вы хотите чуть больше приватности, чем обычно — посетите ее в окне Private Navigation (FF) / Incognito (Chrome) и исключительно через HTTPS. Это моментально исключит атаки типа BREACH (последний хак HTTPS), отключит слежение через Cookies и кеш, как в примере выше.

Всё остальное зависит от вашей степени параноидальности.

На данный момент у нас нет простого ответа, так практически невозможно понять, следит ли данный конкретный сайт за вами через кеш или нет, а полное отключение кеша — большое неудобство для пользователя, т.к. он здорово экономит время и деньги для пользователя, сайтов (которые также экономят трафик) и, в особенности, для мобильных устройств, если у вас не безлимитный 4G-интернет. В особенности, если вы сидите на соединении с большой задержкой (мобильный интернет, частный сектор и т.д.) Если вы уж совсем хотите избавиться от подобной слежки — лучше всего таки полностью отключить кеширование в браузере, но нам кажется, что это того не стоит.

Адд-он для Firefox Self-Destructing Cookies умеет очищать кеш, если вы не пользуетесь браузером некоторое время. Это может быть компромиссным вариантом — вас смогут отследить только в пределах одного посещения, но не между посещениями. С другой стороны — вас всё равно могут отследить в пределах одного посещения, т.к. вы, вероятнее всего, будете использовать один и тот же IP, так что разницы, по-сути, никакой. Зато другие посещения, через некоторое время, уже не могут быть привязаны именно к вам (при условии, что вы позаботились о защите и от других методов слежки).

Мне неизвестен адд-он, способный очищать чек по заданному интервалу (например, раз в 72 часа), но его существование не исключено. Может быть неплохим вариантом для 99% пользователей, т.к. обеспечивает приемлемую защиту без особого ухудшения скорости работы с Сетью.

Update: Адд-он для FF SecretAgent умеет переписывать ETag. При этом можно вести список «доверенных» сайтов, на которых кеширование разрешено, закрыв возможность слежки для остальных. Эффективность адд-она подтверждена здесь.

Если вам понравилась эта статья про слежку, следите за автором в Twitter и Google+!

Вот и всё. Спасибо за внимание. Комментарии по переводу можно оставлять в личку.

Автор:

Источник

Поделиться

* - обязательные к заполнению поля