С высокими технологиями связано одно неприятное правило: чем популярней они становятся, тем меньше конечный пользователь интересуется, так сказать, их содержимым. Двадцать лет назад средний пользователь интернета знал наизусть минимум несколько AT-команд, пятнадцать лет тому понимал разницу между GIF и JPG. Сегодня — возьмите наугад десяток человек: ответит ли кто-нибудь из них на эти вопросы?
Причина понятна и, конечно, не сводится только лишь к постоянному обновлению. Совершенствуясь, техника и технологии становятся ещё и более дружелюбными к пользователю (не из любви к нему, но из необходимости откусить кусок рынка пожирнее), позволяя не углубляться в детали. Однако вот засада: чем ближе та или иная технология к «магии», тем больше шансов, что её можно будет незаметно повернуть против самого же человека. Ведь всё равно он не понимает, как это работает — и даже когда, годы спустя, кто-нибудь докопается до сути, вскроет проблему, вовсе не факт, что разъяснить её актуальность среднестатистическому юзеру удастся. На моей памяти это срабатывало многократно, а сегодня речь пойдёт о самом свежем примере: так называемых зомби-куках — не таком уж новом, но всё ещё крайне эффективном средстве наблюдения за мобильным интернет-пользователем.
У этой штуки на самом деле несколько названий, но ни одно из них утвердиться отчего-то не может. Зомби-куки в разное время и разных местах называли и суперкуками, и пермакуками, и даже неудобным для языка, зато максимально точным, термином tracking header — то есть, буквально, следящим заголовком. Обыкновенные куки или, что правильней, кукисы (от англ. cookies — печенье) сетянам, в общем, хорошо известны: это небольшие файлы, размещаемые в памяти веб-браузера, которые хранят некоторую информацию, полезную для того или иного сайта. Удобно: вернувшись на сайт, пользователь избавлен от необходимости эти данные снова вводить. Удобно и веб-мастерам, которые знают, кто именно на сайт вернулся. Так что куки используют для слежки за сетянами, но их по крайней мере можно блокировать: прямо в настройках браузера или с помощью внешних приложений. А вот зомби-куки хоть и получили название по аналогии, работают сильно иначе — и, собственно, не только не несут пользы для клиента, а и скрывают вполне конкретную опасность. К сожалению, чтобы объяснить, как они функционируют, придётся углубиться в столь нелюбимые многими цифровые дебри.
Начать тут следует с протокола HTTP. Мы давно уже не различаем кирпичиков, из которых сложена Сеть, но полезно помнить, что HTTP появился не одновременно с сетью Интернет, а значительно позже. Это один из трёх краеугольных камней WWW, придуманных группой Тима Бёрнерса-Ли четверть века назад (подробнее см. «Что изобрёл Тим Бёрнерс-Ли и почему это до сих пор важно»). Сильно упрощая, HTTP — это такой язык для передачи гипертекстовых документов, на котором общаются между собой сервер, документы содержащий, и браузер, документы запрашивающий (но вообще-то в качестве клиента может выступать, например, и мобильное приложение). Львиная доля документов в Сети по сей день передаётся с его помощью. И вот что ещё важно: «договариваясь» между собой и даже «договорившись», но «продолжая беседу», браузер и сервер обмениваются некоторой информацией, которая пользователю не нужна и не видна. Вот там-то, в заголовках HTTP-запросов, и прячутся зомби-куки.
В обычной HTTP-беседе участвуют только две стороны: клиент и сервер. Провайдер, обеспечивающий выход клиенту в интернет, в беседу не вмешивается — он лишь передаёт пакеты из рук в руки. Однако представьте, что по какой-то причине провайдер решил изменить нейтралитету и начал метить передаваемые от клиента HTTP-запросы неким уникальным кодом. В простейшем случае, например, вписывать в них телефонный номер смартфона, с которого запросы идут. Вот это и будет зомби-кука. «Зомби» потому, что без специальных инструментов (например, сетевых сканеров, вроде свободного Wireshark) обнаружить присутствие такой записи невозможно. Кука — потому что назначение такой записи во многом аналогично обычным кукисам, разве что пользователю она без надобности, зато очень нужна самому провайдеру и владельцу сайта, куда пакет направляется.
Конечно, большинство веб-мастеров пока ещё понятия не имеют, что в системных полях HTTP что-то такое прописывается. Им до сих пор это было не нужно (экзотические SEO-техники не в счёт). Но опять же на минутку представьте, что провайдер из нашего примера — очень крупный, ну, как Verizon или AT&T в США: ему принадлежит значительная доля национального рынка мобильной связи. В этом случае провайдер может предложить всем желающим веб-мастерам сделку: он будет прописывать в HTTP-заголовках своих пользователей некую полезную информацию, позволяющую идентифицировать конкретного человека, а сайты взамен станут делиться с провайдером доходами от рекламы, которую они покажут, воспользовавшись тайно сообщённой им персональной информацией. Так примерно и работает технология и экономика зомби-куков.
Штука эта на самом деле не новая. Специалисты прослеживают отдельные случаи её применения аж до начала нулевых. Однако только в последние пару лет она стала по-настоящему популярной. К сожалению, уверенно определить, маркирует ли тот или иной провайдер HTTP-трафик своих клиентов зомби-куками, чрезвычайно трудно: не все такие провайдеры используют стандартные решения, кто-то придумывает свои форматы записи, кто-то даже накладывает шифр, так что часто необходим ручной анализ. Тем не менее автоматические сканеры существуют — и собираемая ими статистика рисует, в общем, логичную картину: зомби-куки преимущественно и очень активно используются в Соединённых Штатах, проникли в Европу, замечены в Индии, Канаде, Голландии, Китае, других регионах. Вы тоже можете попробовать провериться, но по указанным причинам, не возлагайте на такую проверку слишком больших надежд.
В Штатах зомби-куки уже спровоцировали ряд скандалов и заставили вмешаться регуляторов, но чистый счёт даже там пока в пользу провайдеров. Чем плохи ЗК? Правозащитники называют две опасности. Первая: провайдеры берут на себя смелость без спросу и незаметно модифицировать транслируемые данные (обывателю это объяснить трудно, поэтому лучше на близком примере: вообразите, что сотовый оператор стал бы без спросу вторгаться в телефонный разговор!). Вторая: открывается неподконтрольный пользователю канал утечки персональной информации. Ведь отфильтровать зомби-куки пользователь не в силах: стандартные браузерные опции (запрет кукисов, опция Do Not Track и т.п.) тут не помогут, как не помогут и всякие там адблоки — для них ЗК попросту не видны.
На данный момент единственный надёжный способ предохраниться состоит в соединении по протоколу HTTPS: благодаря шифрованию, модификация трафика без спросу невозможна. Но не все сайты его поддерживают и даже хуже того, зомби-куки дают им причину не торопиться с поддержкой HTTPS! Дело в том, что ЗК открывают для веб-мастеров и провайдеров новый канал заработка, что и всегда-то было не лишним, а по нынешним временам, когда провайдеры обижены на весь свет за то, что их превратили в подобие коммунальных предприятий (т.е. лишили возможности взимать деньги за что-либо, кроме тупой передачи данных), это особенно ценно. Очевидно, необходимо вмешательство законодателей: пользователей нужно защитить от произвола, например, дав возможность отписаться от зомби-кук. В идеальном случае даже не ставить галочку в договоре с провайдером напротив пункта «Не желаю, чтобы мои личные данные использовались без спросу», а заставить самих провайдеров спрашивать разрешения.
Впрочем, это мечты. И надежда на лучшее, как ни странно, таится в начавших приходить этим летом сообщениях, что зомби-куки могут использовать и уже используют третьи лица. Грубо говоря, злоумышленники, перехватывая трафик, научились выделять из ЗК полезную информацию (например, те же телефонные номера, по которым потом рассылается спам, организуются мошеннические атаки и пр.).
Развитие ситуации в худшую сторону способно подтолкнуть её к точке кипения, после чего, наконец, происходящим озаботятся наверху. Ну, а до тех пор — просто помните, что такая штука есть. Вдруг доведётся столкнуться.
P.S. В статье использована иллюстрация Heather Buckley.