Исследователь Google воскресил атаку, которая позволяет владельцам сайтов
красть историю просмотров посетителей, почти через год после того, как все
производители браузеров представили изменения, с помощью которых можно было
закрыть эту дыру в приватности.
Демонстрационный код, недавно опубликованный исследователем Google Майклом
Залевски, работает против большинства пользователей IE, Chrome и Mozilla. Все
работает несмотря на то, что производители всех трех браузеров исправили свои
продукты таким образом, чтобы запретить им разглашать адреса сайтов, посещенных
более месяца назад.
"Мой proof-of-concept довольно сырой, и у большинства читателей не
заработает", - написал Залевки. "Но в моем эксперименте он предлагает надежный,
производительный, целостный метод проверки кэша, который размывает границу между
:visited и всеми "менее интересными" техниками".
Предыдущие эксплойты эксплуатировали механизм, встроенный во все браузеры,
из-за которого недавно посещенные сайты выглядели иначе, чем не посещенные.
Атаки базировались на CSS, и были отнюдь не теоретическими. В прошлом году
исследователи выяснили, что YouPorn и еще 45 сайтов воруют привычки своих
посетителей в сети, используя уязвимость браузера, о которой впервые стало
известно более десяти лет назад.
Залевски сказал, что производители браузеров закрыли дыру, "значительно
покалечив" функции CSS, построенные вокруг селекторов :visited. Его
proof-of-concept, судя по комментариям, сопровождающим исходный код, применяет
иной подход, известный как синхронизация кэша. Все начинается с загрузки iframe,
содержащего список сайтов внутри страницы, к которой получает доступ посетитель.
Затем производится расчет скорости, с которой отображаются сайты. Те, которые
отображаются быстрее, скорее всего хранятся в кэше браузера. Что означает, что
их недавно посещали.
Синхронизация кэша давно считается способом извлечь историю браузера, как
замечено в известной статье, написанной ученым Принстонского Университета Эдом
Фелтеном. До сих пор проблема такого подхода заключалась в том, что атаки с его
использованием были медлительны и легко засекались, что делало их непрактичными.
Залевски сказал, что его метод способен преодолеть эти недостатки, позволяя
браузерам быстро прерывать основной запрос. В результате стало возможно
тестировать до 50 сайтов в секунду без каких-либо признаков того, что что-нибудь
не в порядке. С небольшими улучшениями – включая оптимизацию, параллелизм, и,
возможно, уменьшения задержки - код был бы способен распознавать "несколько
сотен" URL.