
Nie ma filmu ani muzyki, a komputer zachowuje się tak, jakby odtwarzał dźwięk. W tle działa jeden z mechanizmów rozpoznawania urządzenia. AliExpress analizuje WebAudio, grafikę, sprzęt i zachowanie przeglądarki.
Po otwarciu AliExpress komputer zachowywał się tak, jakby coś odtwarzał. Programista zainteresował się problemem dopiero wtedy, gdy jego słuchawki Bluetooth przestały poprawnie przełączać się między komputerem a telefonem. Śledztwo doprowadziło go do dwóch ukrytych skryptów i mechanizmu służącego do tworzenia odcisku przeglądarki oraz urządzenia.
❗️❗️Aliexpress śledzi ludzi cichymi falami audio. Brzmi to dziwnie, ale to bardzo sprytna metoda profilowania urządzeń w internecie.
Wszystko ujawnił pewien programista korzystający ze słuchawek Bluetooth. Analizując dlaczego ❌ nie chcą się przełączyć z kompa na dźwięk ze… pic.twitter.com/gFVqmXUV9H
Wszystko zaczęło się od słuchawek
Używane przez internautę słuchawki obsługiwały Bluetooth multipoint. Mogły być jednocześnie połączone z komputerem i telefonem, a kiedy PC przestawał odtwarzać dźwięk, telefon przejmował połączenie. Układ działał normalnie do chwili otwarcia strony AliExpress. Po kilku sekundach dźwięk ze telefona przestawał jednak docierać do słuchawek. Zamknięcie karty sklepu natychmiast naprawiało sytuację. Wyciszenie samej karty, całego Firefoksa, a choćby Windowsa nie pomagało.
Najbardziej podejrzane było to, iż na stronie nic nie grało. Nie było elementu audio, filmu uruchomionego w tle ani zwykłego wywołania odtwarzania multimediów. Przeglądarka również nie pokazywała aktywnej sesji multimedialnej. Programista zaczął więc obserwować bezpośrednio Web Audio API, czyli mechanizm przeglądarki pozwalający generować, obrabiać i analizować dźwięk dzięki JavaScriptu. I wtedy znalazł dwa aktywne konteksty audio.
Oba prowadziły do dwóch mocno zaciemnionych skryptów: collina.js oraz fireyejs.js. Znajdowały się w części infrastruktury Alibaba oznaczonej AWSC i wyglądają na element systemów bezpieczeństwa oraz ochrony przed nadużyciami. Kod tworzył dość charakterystyczny układ.
Najpierw generator wytwarzał falę piłokształtną. Następnie sygnał trafiał do modułu analizującego jego adekwatności, dalej do kolejnego elementu przetwarzającego dane i wreszcie do regulatora głośności. Ten ostatni ustawiony był na zero. Użytkownik nie powinien więc niczego usłyszeć.
Mimo tego cały łańcuch był podłączony do systemowego wyjścia audio komputera. Dla przeglądarki oznaczało to aktywne przetwarzanie dźwięku, choćby o ile na samym końcu głośność wynosiła dokładnie zero. Najwyraźniej w konkretnym zestawie komputera, przeglądarki i słuchawek wystarczyło to, aby połączenie Bluetooth pozostawało aktywne po stronie PC i nie chciało oddać priorytetu telefonowi. Właśnie ten przypadkowy efekt uboczny zdradził cały mechanizm.
Po co sklepowi niesłyszalny dźwięk?
Pierwsze, co przychodzi na myśl, to chęć podsłuchiwania użytkownika. Najprawdopodobniej jednak nie o to chodzi. AliExpress nie korzysta tutaj z mikrofonu i nie analizuje tego, co dzieje się w pomieszczeniu. Mechanizm działa praktycznie odwrotnie: sam generuje znany sygnał i sprawdza, co zrobi z nim urządzenie.
Ten sam matematycznie wygenerowany dźwięk może zostać minimalnie inaczej przetworzony w zależności od procesora, systemu operacyjnego, przeglądarki, bibliotek obsługujących dźwięk i innych elementów środowiska. Różnice są zbyt małe, żeby człowiek mógł je usłyszeć, ale komputer może je zmierzyć. To właśnie WebAudio fingerprinting.
Nie jest to zresztą nową techniką. Ryzyko wykorzystania Web Audio API do fingerprintingu opisano choćby w oficjalnej specyfikacji technologii. Różnice w sposobie cyfrowego przetwarzania sygnałów mogą dostarczać informacji pomagających odróżniać jedno środowisko od drugiego. Sam dźwięk nie musi jednak wystarczyć do stworzenia unikalnego numeru seryjnego komputera. I właśnie dlatego AliExpress sprawdza znacznie więcej.
Nie tylko dźwięk. Lista jest naprawdę długa
Analiza obu skryptów ujawniła kod zbierający również informacje o renderowaniu Canvas, WebGL, rozmiarze ekranu i okna przeglądarki, gęstości pikseli, liczbie logicznych rdzeni procesora czy dostępnej pamięci urządzenia. Do tego dochodzą obsługiwane formaty audio i wideo, zachowanie WebRTC, wtyczki przeglądarki i pomiary wydajności.
Skrypty interesują się również człowiekiem siedzącym przed ekranem. Mogą analizować ruchy myszy, dotyk, przewijanie strony, zmianę aktywnego okna, a na odpowiednich urządzeniach także orientację i ruch. Jest też kod szukający cech charakterystycznych dla automatyzacji przeglądarki. Dopiero połączenie tych drobnych informacji tworzy znacznie mocniejszy fingerprint.
Zwykłe ciasteczko jest plikiem zapisanym w przeglądarce, więc można je skasować. Fingerprint nie musi być nigdzie zapisywany na komputerze użytkownika, bo przy kolejnej wizycie może zostać wyliczony ponownie na podstawie tych samych cech środowiska.
To nie oznacza od razu, iż AliExpress wykorzystuje wynik do trwałego śledzenia konkretnej osoby. Z samego kodu uruchamianego w przeglądarce nie da się zobaczyć, jak długo takie informacje są przechowywane na serwerach ani z czym są później łączone. Wiemy natomiast, iż pomiary charakterystyczne dla fingerprintingu są zbierane i przesyłane dalej.
Firefox trochę psuje cały plan
Jest tu jeszcze jeden arcyciekawy szczegół dotyczący tego rodzaju skryptów. Inżynier Firefoksa Tom Ritter jakiś czas temu przyjrzał się fragmentowi odpowiedzialnemu konkretnie za WebAudio i zauważył, iż w tej przeglądarce od kilku lat taki fingerprint ma znacznie mniejszą wartość. Od Firefoksa 118 przeglądarka celowo ujednolica większość wyniku WebAudio, ograniczając ilość informacji, które można w ten sposób wyciągnąć.
W wewnętrznym teście pojawiały się adekwatnie dwa różne wyniki. Prawdopodobnie pozwalały odróżnić przede wszystkim architekturę procesora, np. ARM od x86, a nie każdy komputer z osobna. Nie powinniśmy więc wyobrażać sobie, iż jedna niesłyszalna fala daje AliExpress niepowtarzalny kod konkretnego laptopa. WebAudio jest raczej jednym puzzlem w znacznie większej układance. o ile jednak dołożymy grafikę, ekran, pamięć, CPU, WebRTC, zachowanie użytkownika i kolejne parametry, liczba możliwych kombinacji gwałtownie rośnie.
Po co AliExpress w ogóle to robi?
No własnie, po co? Wielki sklep musi wykrywać boty, masowo zakładane konta, automatyczne wykupywanie towarów, przejmowanie kont, oszustwa płatnicze, fałszywe recenzje oraz nadużywanie kuponów dla nowych użytkowników. Ciasteczka są w takim zastosowaniu po prostu za słabe. Można je wyczyścić albo wygenerować nowy profil przeglądarki. Znacznie trudniej jednak sprawić, żeby automat za każdym razem wyglądał jak całkowicie inny fizyczny komputer.
Fingerprint pozwala więc systemowi antyfraudowemu zauważyć, iż np. 20 pozornie różnych nowych klientów może w rzeczywistości korzystać z bardzo podobnego środowiska. Problem polega na tym, iż ten sam mechanizm techniczny świetnie nadaje się również do śledzenia użytkowników. Z zewnątrz nie widzimy, gdzie dokładnie Alibaba stawia granicę.
Autor odkrycia sprawdził również najprostsze rozwiązanie prowadzące do zablokowania skryptu. Okazuje się, iż wystarczyło wyłączyć collina.js oraz fireyejs.js przez uBlock Origin. Strona główna AliExpress przez cały czas działała, natomiast ukryte konteksty WebAudio przestały się pojawiać. Słuchawki ponownie zaczęły normalnie przełączać się na telefon.
Nie oznacza to jednak, iż każdy powinien natychmiast odcinać te skrypty. o ile rzeczywiście są elementem zabezpieczeń antyfraudowych, ich blokowanie może prowadzić do częstszych CAPTCHA, problemów z logowaniem albo odrzucania płatności jako podejrzanych.
*Źródło grafiki wprowadzającej: Karola G, Pexels / Canva Pro







