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

Разработчиците на библиотеката 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 блокират достъпа до страници с грешки и разрешават достъпа до страници about:blank). Поради защита от флуда, проверката в Tor Browser отнема значително повече време (10 секунди на приложение).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster