Identyfikacja poprzez analizę zewnętrznych procedur obsługi protokołów w przeglądarce

Twórcy biblioteki Fingerprintjs, która umożliwia generowanie identyfikatorów przeglądarki w trybie pasywnym w oparciu o cechy pośrednie, takie jak rozdzielczość ekranu, funkcje WebGL, listy zainstalowanych wtyczek i czcionek, zaprezentowali nową metodę identyfikacji opartą na ocenie typowych zainstalowanych aplikacji na użytkowniku i pracując nad sprawdzeniem obsługi w przeglądarce dodatkowych procedur obsługi protokołów. Kod skryptu z implementacją metody opublikowany jest na licencji MIT.

Sprawdzenie odbywa się na podstawie analizy powiązania handlerów z 32 popularnymi aplikacjami. Przykładowo, ustalając obecność w przeglądarce obsługi schematów adresów URL telegram://, slack:// i skype://, można stwierdzić, że w systemie znajdują się aplikacje telegramowe, slack i skype, i wykorzystać tę informację jako znak podczas generowania identyfikatora systemu. Ponieważ lista programów obsługi jest taka sama dla wszystkich przeglądarek w systemie, identyfikator nie zmienia się przy zmianie przeglądarki i można go używać w przeglądarkach Chrome, Firefox, Safari, Brave, Yandex Browser, Edge, a nawet przeglądarce Tor.

Metoda pozwala na generowanie 32-bitowych identyfikatorów, tj. indywidualnie nie pozwala na osiągnięcie dużej dokładności, ale ma sens jako dodatkowa funkcja w połączeniu z innymi parametrami. Zauważalną wadą metody jest widoczność dla użytkownika próby identyfikacji - podczas generowania identyfikatora na proponowanej stronie demonstracyjnej w prawym dolnym rogu otwiera się małe, ale wyraźnie widoczne okienko, w którym procedury obsługi przewijają się dość długo. Ta wada nie występuje w przeglądarce Tor, w której identyfikator można obliczyć niezauważenie.

Aby określić obecność aplikacji, skrypt próbuje otworzyć łącze powiązane z zewnętrznym modułem obsługi w wyskakującym oknie, po czym przeglądarka wyświetla okno dialogowe z prośbą o otwarcie zawartości w powiązanej aplikacji, jeśli sprawdzana aplikacja jest jest obecny lub wyświetla stronę błędu, jeśli aplikacji nie ma w systemie. Poprzez sekwencyjne wyszukiwanie typowych zewnętrznych procedur obsługi i analizę zwrotów błędów można stwierdzić, że system zawiera testowane programy.

W przeglądarce Chrome 90 dla systemu Linux metoda nie działała, a przeglądarka wyświetlała standardowe okno dialogowe z potwierdzeniem operacji przy każdej próbie sprawdzenia modułu obsługi (w przeglądarce Chrome dla Windows i macOS metoda działa). W przeglądarce Firefox 88 dla systemu Linux, zarówno w trybie normalnym, jak i w trybie incognito, skrypt wykrył obecność zainstalowanych dodatkowych aplikacji z listy, a dokładność identyfikacji oszacowano na 99.87% (35 podobnych dopasowań z 26 tys. przeprowadzonych testów). W przeglądarce Tor działającej w tym samym systemie wygenerowano identyfikator zgodny z testem w przeglądarce Firefox.

Co ciekawe, dodatkowa ochrona w przeglądarce Tor odegrała okrutny żart i zamieniła się w możliwość przeprowadzenia niezauważonej przez użytkownika identyfikacji. Ze względu na wyłączenie okien dialogowych potwierdzających użycie zewnętrznych procedur obsługi w przeglądarce Tor, okazało się, że żądania weryfikacji można otwierać w ramce iframe, a nie w wyskakującym oknie (aby oddzielić obecność i brak procedur obsługi, reguły tego samego pochodzenia blokuj dostęp do stron z błędami i zezwalaj na dostęp do about:pustych stron). Ze względu na ochronę przeciwpowodziową sprawdzanie przeglądarki Tor trwa zauważalnie dłużej (10 sekund na aplikację).

Źródło: opennet.ru

Dodaj komentarz