Перейти к содержимому

Глоссарий

Утечка через поток (worker realm)

Поток выполняет код сайта отдельно от окна, со своим navigator и вовсе без документа. Это второе место, где можно задать тот же вопрос, и добраться до него дешевле всего.

Утечка через поток это расхождение отпечатка между страницей и фоновым потоком, который эта страница запустила.

Что такое фоновый поток

Поток это отдельная нить, которую страница заводит под работу, от которой окно иначе застыло бы. У него нет страницы, нет экрана и нет доступа к тому, что вы видите.

А navigator у него есть, и этот navigator отвечает за число ядер, платформу, языки и память машины.

Как сайт это снимает

Хватает трёх строк кода, а ответ приходит готовыми данными через сообщение, и разбирать странице ничего не нужно.

  1. 1

    Собирает поток прямо в памяти

    Код для него складывается из текста и запускается, ни разу не приезжая с какого-либо адреса.

  2. 2

    Спрашивает те же имена

    Сперва ядра и платформу: именно они сдвигаются, когда отпечаток переписывают.

  3. 3

    Кладёт ответ рядом со страницей

    Одна машина отвечает один раз. Два ответа описывают уже браузер, а не компьютер.

Ваша страница прямо сейчас

Эти четыре значения прочитаны в документе этой страницы, и наружу отсюда ничего не уходит.

Запущенному здесь потоку дали бы те же четыре имени, а его ответ сравнили бы с тем, что вы видите.

Ваша машина прямо сейчас

Логических процессоров
измеряем на вашей машине
Платформа
измеряем на вашей машине
Языки
измеряем на вашей машине
Память устройства
измеряем на вашей машине

Прочитано в вашем браузере и показано здесь. Никуда не отправляется.

Почему поток трудно закрыть

Код потока может лежать по собственному адресу, а переписать то, что браузер оттуда привезёт, код страницы не может.

Поэтому защита, написанная внутри страницы, закрывает видимые ей потоки и не закрывает остальные, а половина тут хуже, чем ничего.

  • Половина закрытого это доказательство

    Сайт, получивший значения профиля из одного потока и значения машины из другого, держит в руках улику подмены, а не браузер для обмера.

  • Туда нечего подставлять

    Приёмы, кладущие значения на страницу, не находят здесь страницы. У потока нет ни документа, ни своего окна.

  • Ответ мимо страницы

    Значения возвращаются сообщением, копией данных, и по дороге их не видит ничто из того, что живёт на странице.

Откуда берутся значения

На нашем движке navigator страницы и navigator потока стоят на одном общем основании, и значения профиля отвечаются именно там.

Семя приходит строкой запуска до всякого кода, поэтому каждая нить браузера читает те же значения, и договариваться им не о чем.

  • Наследуется, а не переносится

    Из страницы в поток ничему ехать не надо, поэтому нет и мгновения, когда одно уже изменено, а другое ещё нет.

  • Второй поток ничего не меняет

    Десять нитей отвечают так же, как одна, потому что ни одна из них не отвечает за себя сама.

  • Самопроверка запускает настоящий

    Внутри профиля самопроверка отпечатка поднимает поток и сверяет его ответ с документом.

Часто путают с этим

  • Утечка через кадр

    Кадр это второй мир на той же странице. До него добираются иначе, и у него есть и экран, и документ.

  • Служебный поток

    Тот переживает вкладку и занимается запросами и сохранёнными ответами. Это вопрос хранения, а не отпечатка.

  • Число ядер

    Значение, которое у потока спрашивают чаще прочих, и у него есть своя страница.

Чего это не делает

  • На встроенном движке это не закрыто. Тот мир нарочно оставлен отвечать за машину: закрыть часть способов запустить поток и не закрыть остальные значит отдать сайту улику вместо значений.
  • Это не даёт потоку собственных значений. Один профиль это одна машина, и нить, расходящаяся со своей страницей, это ровно то, что ищут.
  • Это не мешает сайту запускать потоки. Они обычная часть обычных страниц, а браузер без них выглядел бы куда страннее.
  • Это ничего не решает за пределами отпечатка. Поведение и репутация адреса закрывают аккаунты чаще, чем все миры этой страницы вместе взятые.

Проверить

Каждое утверждение выше взято из файла, который можно открыть.

Замер потока в самопроверке
apps/desktop/src/lib/fpAudit.js
Что отдала отгружаемая сборка в потоке и в документе
engine/приёмка-отчёт.json
Одно общее основание под обоими navigator
engine/patches/armanos-fp.cumulative.diff
Где записана граница встроенного движка
apps/desktop/src/injected/fingerprint.js

Вопросы

Может ли сайт запустить поток без меня?
Да. Разрешения на это не спрашивают и на странице ничего не появляется, а большинство сайтов и так поднимают несколько потоков под обычную работу.
Видит ли поток мои печенья?
Не так, как страница. Здесь у него спрашивают про машину, а это другой вопрос, чем то, что хранится для сайта.
Почему не ответить прямо на странице?
Потому что поток это отдельный мир, который страницу не читает. Всё, что изменили там, в момент запуска нити просто отсутствует.
Поможет ли отключить потоки совсем?
Браузер станет реже любого значения внутри него. Страница, которая запустила поток и не получила ответа, узнаёт о браузере больше, чем узнала бы из самого ответа.
Где посмотреть свой ответ?
Самопроверка внутри профиля поднимает поток и сравнивает его со страницей. Это один из 29 замеров, которые там идут.

Посмотрите, что ответит поток в вашем профиле

Самопроверка отпечатка идёт внутри профиля и показывает все 29 замеров, и зелёные, и красные.