Ідентифікація через аналіз зовнішніх обробників протоколів у браузері

Розробники бібліотеки fingerprintjs, що дозволяє генерувати ідентифікатори браузера в пасивному режимі на основі непрямих ознак, таких як роздільна здатність екрана, особливостей WebGL, списки встановлених плагінів і шрифтів, представили новий метод ідентифікації, заснований на оцінці встановлених у користувача типових додатків додаткових обробників протоколів. Код скрипту з реалізацією методу опубліковано під ліцензією MIT.

Перевірка здійснюється на основі аналізу прив'язки обробників до 32 популярних додатків. Наприклад, визначивши наявність у браузері обробників схем URL telegram://, slack:// та skype:// можна зробити висновок про наявність у системі додатків telegram, slack та skype, та використовувати дану інформацію як ознаку при генерації ідентифікатора системи. Так як список обробників однаковий для всіх браузерів у системі ідентифікатор не змінюється при зміні браузера і може застосовуватись у Chrome, Firefox, Safari, Brave, Yandex Browser, Edge та навіть у Tor Browser.

Метод дозволяє генерувати 32-бітові ідентифікатори, тобто. окремо не дозволяє домогтися великої точності, але має сенс як додатковий ознака в поєднанні з іншими параметрами. Відчутним мінусом методу є помітність спроби ідентифікації для користувача - при генерації ідентифікатора на запропонованій демонстраційній сторінці в нижньому правому куті відкривається невелике, але явно помітне вікно в якому досить довго перебираються обробники. Цей мінус не виявляється в Tor Browser, в якому ідентифікатор може бути обчислений непомітно.

Для визначення наявності програми скрипт намагається відкрити у спливаючому вікні посилання, пов'язане із зовнішнім обробником, після чого браузер виводить діалог з пропозицією відкрити вміст у зв'язаному додатку, якщо додаток, що перевіряється, або видає сторінку з помилкою, якщо програми немає в системі. Через послідовний перебір типових зовнішніх обробників та аналіз повернення помилки можна зробити висновок про наявність у системі програм, що перевіряються.

У Chrome 90 для Linux метод не спрацював і браузер на всі спроби перевірки обробника вивів типовий діалог підтвердження операції (в Chrome для Windows і macOS метод працює). У Firefox 88 для Linux, як у звичайному режимі, так і в режимі інкогніто, скрипт визначив наявність додаткових додатків зі списку, а точність ідентифікації оцінена в 99.87% (35 подібних збігів з 26 тисяч проведених тестів). У запущеному на тій же системі Tor Browser був згенерований ідентифікатор, що збігається з тестом Firefox.

Цікаво, що додатковий захист у Tor Browser зіграв злий жарт і обернувся можливістю провести ідентифікацію непомітно для користувача. Через відключення в Tor Browser діалогів підтвердження використання зовнішніх обробників перевірочні запити виявилося можна відкривати в iframe, а не в popup-вікні (для поділу наявності та відсутності обробників використовується те, що правила same-origin блокують доступ до сторінок з помилкою та дозволяють до сторінок про:blank). Через захист від флуду перевірка Tor Browser займає помітно довше часу (10 секунд на додаток).

Джерело: opennet.ru

Додати коментар або відгук