Korzystasz z trybu incognito? Twoją sesję i tak można wyśledzić

dodał 4 stycznia 2015 o 14:39 w kategorii Prywatność  z tagami:
Korzystasz z trybu incognito? Twoją sesję i tak można wyśledzić

Mamy złą wiadomość dla użytkowników popularnego „trybu incognito”. Sesję prywatną i zwykłą można bez większego problemu ze sobą skojarzyć używając dość prostej, znanej od paru lat choć mało nagłośnionej niestandardowej techniki.

Na początek proponujemy Wam odwiedziny na stronie testowej, gdzie możecie przeczytać swój identyfikator (wymagany JavaScript). Następnie otwórzcie nową zakładkę w trybie incognito i wejdźcie na ten sam adres. Identyfikator się zgadza? To zapraszamy do lektury, szczególnie użytkowników Safari. Nie zgadza się? Spróbujcie odświeżyć stronę, czasem prawidłowy pojawia się za drugim razem.

HSTS, czyli więcej bezpieczeństwa

Zacznijmy od wyjaśnienia, czym jest HSTS, czyli HTTP Strict Transport Security. Jest to wprowadzony kilka lat temu tryb gwarantowania połączenia HTTPS z danym adresem WWW. Daje on serwerowi możliwość komunikacji z kompatybilnymi przeglądarkami wyłącznie w formie połączeń HTTPS. Po pierwszym zapytaniu do serwera ten może poinformować przeglądarkę, że dany adres będzie zawsze serwowany wyłącznie w ramach połączenia HTTPS i próby połączenia po HTTP nie zostaną zrealizowane. Pomaga to zapobiegać atakom wykorzystującym np. narzędzie sslstrip do obniżenia poziomu zabezpieczeń sesji z serwerem WWW.

Przeglądarka obsługująca ten tryb przechowuje lokalnie informacje o tym, czy dany adres posiada flagę HSTS czy też nie. Informację taką można odczytać np. za pomocą JavaScriptu. Widzicie już zagrożenie? Skoro strona internetowa może zapisać w przeglądarce zestaw flag dla wybranych adresów, to nie jest problemem zakodowanie w ten sposób całej wiadomości np. w formie unikatowego identyfikatora. Ryzyko to było znane w momencie tworzenia specyfikacji technicznej HSTS, jednak nie zaproponowano żadnych prostych rozwiązań.

Ktoś czyha na ciasteczka

Ktoś czyha na ciasteczka

Jak działa identyfikacja

Na blogu firmy leviathan przytoczono prosty przykład zapisywania i odczytywania wiadomości z przeglądarki użytkownika. Możemy na przykład zamieścić na stronie taki fragment kodu:

[img]https://charcount-5.trackingdomain.com/setbit.png[/img]
[img]https://0-H.trackingdomain.com/setbit.png[/img]
[img]https://1-E.trackingdomain.com/setbit.png[/img]
[img]https://2-L.trackingdomain.com/setbit.png[/img]
[img]https://3-L.trackingdomain.com/setbit.png[/img]
[img]https://4-O.trackingdomain.com/setbit.png[/img]

i dla każdego z powyższych URLi poprosić przeglądarkę o zapamiętanie flagi HSTS. Następnie wystarczy pytać przeglądarkę (również działającą w trybie incognito) o kolejne URLe tak długo, aż trafi się na właściwy:

http://charcount-1.trackingdomain.com/getbit.png [ Server: HTTP ]
http://charcount-2.trackingdomain.com/getbit.png [ Server: HTTP ]
http://charcount-3.trackingdomain.com/getbit.png [ Server: HTTP ]
http://charcount-4.trackingdomain.com/getbit.png [ Server: HTTP ]
http://charcount-5.trackingdomain.com/getbit.png [ Server: HTTPS! ]

Oczywiście metod zapisu jest wiele, można chociażby korzystać ze zwykłego zapisu binarnego lub filtra Blooma.

Które przeglądarki są podatne

Nie wszystkie przeglądarki są podatne na ten atak i nie wszystkie reagują identycznie na próbę jego ograniczania. Jak informuje firma Radical Research Google Chrome, Firefox i Opera kasują flagi HSTS w trakcie usuwania ciasteczek. Oznacza to, że choć w trybie incognito przeglądarka poda zapisane dane, to prosta operacja kasowania ciastek przywróci naszą anonimowość. W naszych prostych testach faktycznie Chrome i Firefox w trybie prywatnym były podatne a dobry wynik dało usunięcie ciasteczek.

W dużo gorszej sytuacji są użytkownicy Safari. Na iPadzie lub iPhonie nie ma możliwości skasowania flag HSTS przez użytkownika. Co więcej flagi te synchronizowane są z kontem iCloud, dzięki czemu użytkownika można prawidłowo identyfikować również pomiędzy różnymi urządzenia, jeśli na wszystkich korzysta z tego samego konta Apple czy też na przykład po pełnym resecie urządzenia.

Na przeciwnym biegunie są za to użytkownicy Internet Explorera, który po prostu HSTS nie wspiera… Tor Browser również nie wydaje się podatny.

Jeśli jesteś użytkownikiem Firefoksa to możesz zobaczyć swoje flagi HSTS w następujący sposób:

echo "SELECT * FROM moz_hosts WHERE type='sts/use';" | sqlite3 permissions.sqlite

lub za pomocą dowolnej przeglądarki baz SQLite.

Co robić?

Odpowiedź jest prosta i zawsze aktualna – nie traktować trybu prywatnego przeglądarki jako zapewniającego anonimowość lub prywatność. A mechanizmów identyfikujących użytkowników jest multum.

Aktualizacja: Z uwagi na rozbieżne raporty użytkowników spróbujmy usystematyzować wyniki testu. My zaczynamy, Wy dopisujcie miasta w komentarzach ;)

  • Chrome/Windows/39.0.2171.95: to samo ID – inni zgłaszają, że nie
  • Firefox/Windows/31.0: to samo ID
  • Firefox/Windows/34.0.5.5443 to samo ID

 Uwaga! Warto testować po kilka razy – według raportów w trybie prywatnym odświeżenie strony powoduje czasem pojawienie się ID z trybu normalnego.