Twórcy biblioteki fingerprintjs, która umożliwia generowanie identyfikatorów przeglądarki w trybie pasywnym na podstawie pośrednich cech, takich jak rozdzielczość ekranu, cechy WebGL, listy zainstalowanych wtyczek i czcionek, zaprezentowali nową metodę identyfikacji opartą na ocenie zainstalowanych u użytkownika aplikacji standardowych, działającą poprzez sprawdzenie wsparcia dla dodatkowych protokołów w przeglądarce. Kod skryptu z realizacją metody został opublikowany na licencji MIT.
Sprawdzanie odbywa się na podstawie analizy wewnętrznych handlerów 32 popularnych aplikacji. Na przykład, określając obecność w przeglądarce handlerów schematów URL telegram://, slack:// i skype:// można wywnioskować, że w systemie znajdują się aplikacje telegram, slack i skype, a tę informację można wykorzystać jako wskaźnik przy generowaniu identyfikatora systemu. Ponieważ lista handlerów jest taka sama dla wszystkich przeglądarek w systemie, identyfikator nie zmienia się przy zmianie przeglądarki i może być stosowany w Chrome, Firefox, Safari, Brave, Yandex Browser, Edge, a nawet w Tor Browser.
Metoda ta pozwala generować 32-bitowe identyfikatory, tzn. z osobna nie zapewnia dużej dokładności, ale ma sens jako dodatkowy wskaźnik w połączeniu z innymi parametrami. Wyraźną wadą metody jest widoczność prób identyfikacji dla użytkownika — przy generowaniu identyfikatora na proponowanej stronie demonstracyjnej w prawym dolnym rogu otwiera się małe, ale wyraźnie zauważalne okno, w którym przez dość długi czas przeszukiwane są handlerzy. Ta wada nie występuje w Tor Browser, w którym identyfikator może być obliczony niezauważalnie.
Aby określić obecność aplikacji, skrypt próbuje otworzyć w oknie wyskakującym link związany z zewnętrznym handlerem, po czym przeglądarka wyświetla okno dialogowe z propozycją otwarcia treści w powiązanej aplikacji, jeśli sprawdzana aplikacja jest obecna, lub wyświetla stronę z błędem, jeśli aplikacja nie jest zainstalowana w systemie. Poprzez sekwencyjne przeszukiwanie standardowych zewnętrznych handlerów i analizę zwróconych błędów można wywnioskować o obecności w systemie sprawdzanych programów.
W Chrome 90 na systemie Linux metoda nie zadziałała i przeglądarka na wszystkie próby sprawdzenia przetwornika wyświetliła standardowy dialog potwierdzenia operacji (w Chrome na Windows i macOS metoda działa). W Firefox 88 na systemie Linux, zarówno w trybie normalnym, jak i w trybie incognito, skrypt zidentyfikował obecność zainstalowanych dodatkowych aplikacji z listy, a dokładność identyfikacji oceniono na 99,87% (35 podobnych trafień z 26 tysięcy przeprowadzonych testów). W uruchomionej na tym samym systemie przeglądarce Tor wygenerowano identyfikator, który zgadzał się z testem w Firefox.
Ciekawostką jest to, że dodatkowa ochrona w przeglądarce Tor zadziałała na swoją niekorzyść i przekształciła się w możliwość przeprowadzenia identyfikacji niezauważalnie dla użytkownika. Z powodu wyłączenia w Tor Browser dialogów potwierdzenia używania zewnętrznych przetworników, zapytania weryfikacyjne można było otwierać w iframe, a nie w popup-oknie (do oddzielenia obecności i braku przetworników wykorzystano to, że zasady same-origin blokują dostęp do stron z błędami i zezwalają na dostęp do stron about:blank). Z powodu ochrony przed floodem weryfikacja w Tor Browser trwa zauważalnie dłużej (10 sekund na aplikację).
Źródło: opennet.ru
