Można łatwo sprawdzić, czy jesteś zalogowany do Facebooka, Twittera, itp.

Okazuje się, że większość platform webowych pozwala bez wiedzy użytkownika sprawdzić, czy jest on zalogowany. Czy taka informacja jest coś warta? Nie daje ona dostępu do danych z konta użytkownika, ale może posłużyć jako pierwszy krok w ich pozyskaniu.

Sposób pozyskiwania tych informacji o zalogowaniu jest ciekawy. Opiera się na wykorzystaniu mechanizmu przekierowania stron internetowych. Na przykładzie Facebooka: Przy próbie wejścia na stronę ustawień zostaniemy na nią przeniesieni tylko jeśli jesteśmy zalogowani. Jeśli się nie zalogowaliśmy, to przeglądarka przekieruje nas na stronę logowania dołączając w parametrze adres na który chcieliśmy przejść:

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fsettings

Próba wejścia na taki adres sprawdzi stan zalogowania i odpowiednio przekieruje użytkownika.  Spowoduje to więc:

  • Dla zalogowanego – przejście do ustawień
  • Dla niezalogowanego – przejście na stronę logowania

Widać już, że sprawdzenie stanu zalogowania nie jest trudne. Żeby był on do czegoś przydatny przydałoby się go trochę bardziej to zautomatyzować. Zrobienie tego na innej stronie utrudnia nam trochę Same Origin Policy, która nie pozwala na przekazanie treści stronie, która jest w innej domenie. Nie działa ona jednak na grafikę, więc do ataku można wykorzystać favikonę.

Żeby zademonstrować jak to wygląda, Robin Linus stworzył stronę, która sprawdza stan zalogowania w najpopularniejszych serwisach:

https://robinlinus.github.io/socialmedia-leak/

Kilka platform już zdążyło wprowadzić poprawki, ale wiele z nich akceptuje ten problem. Ciekawe jak długo? Pewnie aż znajdzie się ktoś, kto umiejętnie wykorzysta tę lukę na większą skalę.