Kilka dni temu okazało się, że błąd oprogramowania wprowadzony w implementacji interfejsu API IndexedDB w Apple Safari 15 może zostać wykorzystany przez złośliwą witrynę do śledzenia aktywności użytkowników w przeglądarce internetowej. Co gorsza, może nawet ujawnić ich tożsamość.
Luka, nazwana IndexedDB Leaks, została ujawniona przez firmę FingerprintJS zajmującą się ochroną przed fraudem. Problem został podobno zgłoszony do Apple już 28 listopada 2021 roku.

Czas na trochę wprowadzenia. IndexedDB to niskopoziomowy interfejs API JavaScript udostępniany przez przeglądarki internetowe do zarządzania bazą danych NoSQL zawierającą ustrukturyzowane obiekty danych, takie jak na przykład pliki.
Podobnie jak większość rozwiązań do przechowywania danych w sieci Web, IndexedDB przestrzega zasad tego samego pochodzenia – tzw. „same-origin policy”. Oznacza to, że dostęp do danych możliwy jest tylko w obrębie tej samej domeny, a nawet jeszcze bardziej restrykcyjnie – w obrębie tego samego źródła. Identyczne źródło jest podstawowym mechanizmem bezpieczeństwa, który zapewnia, że zasoby pobierane z różnych źródeł — tj. kombinacji schematu (protokołu), hosta (domeny) i numeru portu adresu URL — są od siebie odizolowane. W praktyce oznacza to, że „http[:]//przykład[.]pl/” i „https[:]//przykład[.]pl/” nie mają tego samego pochodzenia, ponieważ używają różnych schematów.
Ograniczając sposób, w jaki skrypt załadowany przez jedno źródło może wchodzić w interakcje z zasobem z innego źródła, chodzi o to, aby zamaskować potencjalnie złośliwe skrypty i ograniczyć potencjalne wektory ataków. Na przykład, dzięki temu mechanizmowi niemożliwe jest uruchomienie ze złośliwej domeny dowolnego kodu JavaScript w celu odczytania danych z innej domeny, powiedzmy, z usługi poczty e-mail.

Tego właśnie dotyczy błąd w Safari 15 w systemach iOS, iPadOS i macOS. Zasada tego samego pochodzenia jest tutaj złamana i nie obowiązuje. Za każdym razem, gdy witryna wchodzi w interakcję z bazą danych, nowa (pusta) baza danych o tej samej nazwie jest tworzona we wszystkich innych aktywnych ramkach, kartach i oknach w ramach tej samej sesji przeglądarki.

Poniżej wstawiamy film, przedstawiający i tłumaczący tę podatność.

Konsekwencją tego naruszenia prywatności jest to, że pozwala on witrynom internetowym dowiedzieć się, jakie inne witryny odwiedza użytkownik w różnych zakładkach lub oknach, nie wspominając o dokładnej identyfikacji użytkowników usług Google, takich jak YouTube czy Gmail. Witryny te tworzą bazy danych IndexedDB, które zawierają uwierzytelnione identyfikatory użytkowników Google, czyli wewnętrzny ID, który jednoznacznie ustala pojedyncze konto Google.
To oznacza nie tylko, że niezaufane lub złośliwe strony internetowe mogą poznać tożsamość użytkownika, ale także umożliwia kojarzenie wielu oddzielnych kont używanych przez tego samego użytkownika, co dla hackera jest znaczącą wartością.

Co gorsza, wyciek działa również w trybie przeglądania prywatnego w Safari 15, jeśli użytkownik odwiedza wiele różnych witryn z tej samej karty w oknie przeglądarki.

„To ogromny błąd” – napisał na Twitterze Jake Archibald, rzecznik głównego programisty Google Chrome. „W systemie OSX użytkownicy Safari mogą (tymczasowo) przełączyć się na inną przeglądarkę, aby uniknąć wycieku danych między źródłami. Użytkownicy iOS nie mają takiego wyboru, ponieważ Apple nakłada zakaz na inne silniki przeglądarek”.

Apple zostało powiadomione i jest świadome problemu, jednak nie wydało jeszcze konkretnego oświadczenia w tej kwestii.

Podziel się z innymi tym artykułem!