APPLE ИСПРАВИЛА СВЯЗАННУЮ С HSTS УЯЗВИМОСТЬ В SAFARI
APPLE ИСПРАВИЛА СВЯЗАННУЮ С HSTS УЯЗВИМОСТЬ В SAFARI
Проблема позволяла отслеживать пользователей с помощью большого количества доменов.
Компания Apple исправила в фреймворке WebKit, на котором основан браузер Safari, опасную уязвимость, позволяющую злоупотреблять механизмом HSTS для отслеживания пользователей.
HSTS (HTTP Strict Transport Security) представляет собой механизм, позволяющий web-сайту принудительно устанавливать HTTPS-соединение. Проблема заключалась в том, что сайт мог использовать информацию переадресации для отслеживания пользователей, поскольку стандарт HSTS предусматривает сохранение информации о перенаправлении для использования в будущем.
По словам исследователей, идентификатор HSTS, установленный на каждом сайте с перенаправлением на HTTPS, уникален для каждого пользователя и может быть прочитан из настроек браузера. Подобные идентификаторы могут быть сохранены, и у пользователя не будет возможности их очистить.
«Злоумышленник, стремящийся отслеживать посетителей сайта, может воспользоваться кешем HSTS для хранения одного бита информации на устройстве пользователя. Например, «загрузить этот домен с помощью HTTPS» может представлять собой 1, в то время как ни одна запись в кеше HSTS не будет представлять 0», — пишет исследователь Брент Фулгэм (Brent Fulgham).
«Зарегистрировав большое количество доменов (например, 32 или более) и принудительно загрузив ресурсы из управляемого подмножества этих доменов, злоумышленники могут создать достаточно большое количество бит, чтобы идентифицировать каждого посетителя сайта», — добавил он.
В WebKit Apple решила устранить «оба источника проблемы» путем ограничения состояния HSTS до TLD, и изменения метода записи состояния HSTS.
Решение первое. Сетевой стек устанавливает только состояние HSTS для загруженного имени хоста или «TLD плюс один», а WebKit перекрывает количество переадресаций, которые могут быть соединены вместе, создавая таким образом верхнюю границу количества бит которое может быть установлено, даже если задержка была признана приемлемой.
Решение второе. WebKit блокирует невидимые пиксели, созданные с помощью перенаправления HSTS. В результате биты становятся цепочкой нулей.