Глоссарий
Утечка через поток (worker realm)
Утечка через поток это расхождение отпечатка между страницей и фоновым потоком, который эта страница запустила.
Что такое фоновый поток
Поток это отдельная нить, которую страница заводит под работу, от которой окно иначе застыло бы. У него нет страницы, нет экрана и нет доступа к тому, что вы видите.
А navigator у него есть, и этот navigator отвечает за число ядер, платформу, языки и память машины.
Как сайт это снимает
Хватает трёх строк кода, а ответ приходит готовыми данными через сообщение, и разбирать странице ничего не нужно.
- 1
Собирает поток прямо в памяти
Код для него складывается из текста и запускается, ни разу не приезжая с какого-либо адреса.
- 2
Спрашивает те же имена
Сперва ядра и платформу: именно они сдвигаются, когда отпечаток переписывают.
- 3
Кладёт ответ рядом со страницей
Одна машина отвечает один раз. Два ответа описывают уже браузер, а не компьютер.
Ваша страница прямо сейчас
Эти четыре значения прочитаны в документе этой страницы, и наружу отсюда ничего не уходит.
Запущенному здесь потоку дали бы те же четыре имени, а его ответ сравнили бы с тем, что вы видите.
Ваша машина прямо сейчас
- Ядра процессора
- измеряем на вашей машине
- Платформа
- измеряем на вашей машине
- Языки
- измеряем на вашей машине
- Память устройства
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Почему поток трудно закрыть
Код потока может лежать по собственному адресу, а переписать то, что браузер оттуда привезёт, код страницы не может.
Поэтому защита, написанная внутри страницы, закрывает видимые ей потоки и не закрывает остальные, а половина тут хуже, чем ничего.
Половина закрытого это доказательство
Сайт, получивший значения профиля из одного потока и значения машины из другого, держит в руках улику подмены, а не браузер для обмера.
Туда нечего подставлять
Приёмы, кладущие значения на страницу, не находят здесь страницы. У потока нет ни документа, ни своего окна.
Ответ мимо страницы
Значения возвращаются сообщением, копией данных, и по дороге их не видит ничто из того, что живёт на странице.
Откуда берутся значения
В ARMANOS Browser navigator страницы и navigator потока стоят на одном общем основании, и значения профиля отвечаются именно там.
Семя приходит строкой запуска до всякого кода, поэтому каждая нить браузера читает те же значения, и договариваться им не о чем.
Наследуется, а не переносится
Из страницы в поток ничему ехать не надо, поэтому нет и мгновения, когда одно уже изменено, а другое ещё нет.
Второй поток ничего не меняет
Десять нитей отвечают так же, как одна, потому что ни одна из них не отвечает за себя сама.
Автопроверка отпечатка запускает настоящий
Внутри профиля автопроверка отпечатка (меню профиля > Проверить отпечаток) поднимает поток и сверяет его ответ с документом.
Часто путают с этим
Утечка через кадр
Кадр это второй мир на той же странице. До него добираются иначе, и у него есть и экран, и документ.
Служебный поток
Тот переживает вкладку и занимается запросами и сохранёнными ответами. Это вопрос хранения, а не отпечатка.
Число ядер
Значение, которое у потока спрашивают чаще прочих, и у него есть своя страница.
Чего это не делает
- На встроенном движке поток закрыт не целиком. В обычном, вложенном, общем и служебном потоке язык, часовой пояс, число ядер, платформа, память, марки браузера, видеокарта и холст профиля, те же, что у страницы. Новый общий поток получает профиль только после запуска, поэтому код, который он исполняет сразу при запуске, может прочесть машину (следующие его задачи уже профиля), а служебный поток, разбуженный без открытой страницы профиля, профиля не получает вовсе.
- Это не даёт потоку собственных значений. Один профиль это одна машина, и нить, расходящаяся со своей страницей, это ровно то, что ищут.
- Это не мешает сайту запускать потоки. Они обычная часть обычных страниц, а браузер без них выглядел бы куда страннее.
- Это ничего не решает за пределами отпечатка. Поведение и репутация адреса закрывают аккаунты чаще, чем все миры этой страницы вместе взятые.
Проверить
Каждое утверждение выше взято из файла, который можно открыть.
- Замер потока в автопроверке отпечатка
- apps/desktop/src/lib/fpAudit.js
- Что отдала отгружаемая сборка в потоке и в документе
- engine/приёмка-отчёт.json
- Одно общее основание под обоими navigator
- engine/patches/armanos-fp.cumulative.diff
- Где записана граница встроенного движка
- apps/desktop/src/injected/fingerprint.js · apps/desktop/src/lib/язык-воркеров.js · apps/desktop/test/язык-встроенного-во-всех-мирах.js
Вопросы
- Может ли сайт запустить поток без меня?
- Да. Разрешения на это не спрашивают и на странице ничего не появляется, а большинство сайтов и так поднимают несколько потоков под обычную работу.
- Видит ли поток мои куки?
- Не так, как страница. Здесь у него спрашивают про машину, а это другой вопрос, чем то, что хранится для сайта.
- Почему не ответить прямо на странице?
- Потому что поток это отдельный мир, который страницу не читает. Всё, что изменили там, в момент запуска нити просто отсутствует.
- Поможет ли отключить потоки совсем?
- Браузер станет реже любого значения внутри него. Страница, которая запустила поток и не получила ответа, узнаёт о браузере больше, чем узнала бы из самого ответа.
- Где посмотреть свой ответ?
- Самопроверка внутри профиля поднимает поток и сравнивает его со страницей. Это один из замеров, которых там до 37.
Посмотрите, что ответит поток в вашем профиле
Самопроверка отпечатка идёт внутри профиля и показывает до 37 замеров, и зелёные, и красные.