Google добавляет разделение посещенных ссылок в Chrome, что делает его первым веб-браузером, полностью защищенным от уязвимостей безопасности вокруг посещенных ссылок. Изменение должно распространиться и на другие браузеры на базе Chromium, такие как Vivaldi и Microsoft Edge.
Вы, вероятно, видели, как некоторые ссылки на веб-страницах меняют цвет на фиолетовый или какой-либо другой визуальный индикатор после того, как вы посетили связанную страницу. Как и многие другие функции, реализованные веб-браузерами на протяжении многих лет (RIP Battery Status API), это случайно превратилось в отличный способ отслеживать людей в Интернете, когда они посещают разные веб-страницы.
Как работает уязвимость безопасности
Веб-браузеры позволяют сайтам настраивать внешний вид текста и других элементов с помощью селекторов CSS. Например, веб-сайт может добавлять стили к ‘.dropdown input’, чтобы изменить все элементы ввода в раскрывающемся элементе, вместо использования идентификаторов или классов для каждого отдельного элемента. Селектор ‘:visited’ позволяет веб-страницам применять стили к ссылкам на посещенные вами страницы, что полезно для изменения фиолетового цвета по умолчанию или применения других эффектов.
Однако предоставление веб-страницам возможности определять посещенные ссылки имеет некоторые побочные эффекты. Вредоносная страница может включать сотни или тысячи ссылок, и, проверяя, какие из них соответствуют селектору :visible, она может создать частичную запись вашей истории просмотров на разных сайтах.
Современные веб-браузеры уже имеют несколько мер по предотвращению такого поведения, например, предоставление пустых данных, когда веб-страницы запрашивают список элементов :visible, и ограничение стилей, которые могут быть применены к элементам :visible. Однако эти изменения не полностью устранили уязвимости безопасности. Google заявила, что «поскольку настраиваемость посещаемых ссылок со временем возросла, также возросло и число атак, обнаруженных исследователями безопасности».
Как Chrome это исправил
Решение Google — это система песочницы для ссылок :visited, которая изолирует историю ссылок для каждого отдельного веб-сайта, вместо того, чтобы хранить их все в одном списке, к которому любой сайт может потенциально получить доступ. Именно так уже работают локальное хранилище и многие другие API браузера.
Компания заявила в сообщении в блоге: «Вы просматриваете Сайт A и нажимаете ссылку, чтобы перейти на Сайт B, комбинация «Сайт A + Сайт B» сохраняется в вашей истории :visited. Таким образом, когда вы посещаете Сайт Evil, его ссылка на Сайт B не будет отображаться как :visited, потому что она не соответствует обеим частям нашей записи «Сайт A + Сайт B» (контекст, в котором вы изначально нажали на ссылку). Поскольку на Сайте Evil не отображается история просмотров, он не может воспользоваться никакими эксплойтами. Поэтому история вашего браузера в безопасности!»
Эта система изоляции должна полностью блокировать любые потенциальные уязвимости безопасности вокруг ссылок :visited. Google также обсудила удаление предыдущих мер по смягчению, поскольку они больше не нужны, но это «будущая работа», которая может не произойти в ближайшее время.
В Chrome 136
Google сообщает, что разбиение посещенных ссылок будет доступно в Chrome 136, частичный выпуск которого запланирован на 23 апреля 2025 года, а полный выпуск — на 29 апреля 2025 года. Предположительно, другие веб-браузеры, основанные на том же исходном коде Chromium (например, Vivaldi, Edge, Opera и т. д.), получат эту функцию при обновлении до Chromium 136 или более поздней версии.
Mozilla поддерживает разбиение посещенных ссылок, но неясно, когда Firefox может реализовать ту же функцию — она была впервые предложена восемь лет назад. Команда WebKit от Apple также поддерживает эту идею, но, опять же, нет подтверждения того, когда она может появиться в Safari.
Источник: Chrome для разработчиков