Jak czytać cudzą pocztę na WP, czyli o znaczeniu spójnego wdrożenia HTTPS

dodał 22 marca 2018 o 21:00 w kategorii Prywatność, Wpadki  z tagami:
Jak czytać cudzą pocztę na WP, czyli o znaczeniu spójnego wdrożenia HTTPS

Czy korzystając z niektórych serwisów zdarzyło się Wam zauważyć, iż zaraz po zalogowaniu z HTTPS jesteście przekierowywani na nieszyfrowane HTTP? Zastanawialiście się, czy jest to bezpieczne? Zdecydowanie nie jest.

Jeden z czytelników zwrócił nam uwagę na podatność w kliencie webowym poczty Wirtualnej Polski, umożliwiającą swobodny dostęp do poczty innych osób znajdujących się w tej samej sieci (bezprzewodowej). Przyjrzeliśmy się tematowi i postanowiliśmy wykorzystać go do podniesienia świadomości czytelników dotyczącej (nie)bezpieczeństwa pewnej praktyki, którą niestety nadal dosyć często można spotkać w internecie. Liczymy również, że może to zachęcić Wirtualną Polskę to szybszego zajęcia się tematem.

Hasło jest bezpiecznie przesyłane, więc w czym problem?

Przy zgłaszaniu problemów z nieszyfrowaną transmisją do operatora serwisu często można przeczytać w odpowiedzi: „Logowanie jest po HTTPS. Hasło jest bezpieczne. Nie musi Pan/Pani się martwić. Problemu nie ma”. Niestety, to nie do końca prawda. O ile rozwiązanie to jest trochę lepsze niż brak szyfrowania w ogóle (hasło nie jest tu rzeczywiście ujawniane), to tak naprawdę tworzy tylko fałszywe poczucie bezpieczeństwa. Do całkiem swobodnego dostępu do naszego konta hasło nie jest niezbędne.

Po prawidłowym zalogowaniu do serwisu (uwierzytelnieniu) użytkownikowi nadawany jest unikalny identyfikator sesji/token sesyjny (zazwyczaj długi ciąg alfanumeryczny). Jest on przesyłany w każdym kolejnym odwołaniu do strony (żądaniu), zazwyczaj jako ciasteczko sesyjne. Na jego podstawie system wie, kto (jaki użytkownik) wywołuje daną operację (np. odczyt maila) i do czego ma dostęp (np. czytanie tylko swoich wiadomości). Atakujący posiadający ten token może uzurpować bycie prawowitym użytkownikiem danego konta i robić w jego imieniu (prawie) wszystko.

Kto może zdobyć ten token przy komunikacji po HTTP?

  • każda osoba podłączona do tej samej otwartej sieci bezprzewodowej (np. publiczny hotspot),
  • każda (zdeterminowana) osoba podłączona do tej samej zabezpieczonej (nawet WPA2) sieci bezprzewodowej,
  • (plus oczywiście administrator sieci lokalnej i dostawca internetu, ale oni zazwyczaj mają znacznie więcej możliwości, aby czytać naszą pocztę).

Co można osiągnąć w przypadku poczty WP?

  • czytać Twoją pocztę (przychodzącą i wychodzącą) – w tym listy od/do kochanki/kochanka, prywatne zdjęcia, umowy i skany dowodu,
  • wysyłać maile w Twoim imieniu – w tym te o treści, którą mogą zainteresować się odpowiednie służby,
  • przejąć dostęp do większości zewnętrznych usług zarejestrowanych na to konto mailowe (chyba że wymaga to uwierzytelnienia dwuskładnikowego – 2FA).

W ostatnim przypadku nie pomoże stosowanie HTTPS w tamtych usługach. Mail o resecie hasła można szybko usunąć z poczty i o problemie dowiemy się dopiero przy kolejnym logowaniu (a raczej jego próbie). Wtedy naszych bitcoinów może już nie być, znajomi z komunikatorów mogą być już przekonani do „pożyczenia” nam pieniędzy itp. Spośród opisywanych przez nas przypadków podsłuchiwania danych w sprzyjających okolicznościach warto także przypomnieć o poważnym błędzie w aplikacji LUX MED-u, który umożliwiał nieuprawnionym użytkownikom czytanie czatów z lekarzami.

Czego nie może zrobić atakujący?

  • zmienić hasła do poczty,
  • zmienić większości istotnych danych konta (jak numer telefonu czy adres do odzyskiwania konta),
  • czytać poczty po tym, jak my się z niej wylogowaliśmy,
  • podejrzeć tokenu sesji przy połączeniu z osobnego klienta pocztowego przez protokół IMAP/POP3/STMP – te kanały od dawna są szyfrowane.

Przejmowanie konta Poczty WP w praktyce

Krótka demonstracja, jak w kilka minut możemy uzyskać dostęp do poczty innej osoby.

UWAGA. W czasie weryfikacji podatności uzyskaliśmy dostęp do naszego własnego konta bez podawania hasła na innym komputerze. Uzyskiwanie dostępu do cudzych kont/systemów bez zgody właściciela/administratora może być w Polsce przestępstwem.

Logujemy się do poczty WP

I używamy jej jak zazwyczaj na pierwszym komputerze.

Przejmujemy token sesji

Przy każdym odwołaniu do serwera wysyłany jest identyfikujący nas token sesji. Ze względu na specyfikę sieci bezprzewodowych, mając kartę sieciową mogącą działać w trybie monitor i/lub promiscuous (większość kart dostępnych na rynku), jesteśmy w stanie otrzymać pakiety wysyłane od/do innych użytkowników tej samej sieci. Wykorzystując bezpłatne oprogramowanie, możemy je zapisać i następnie zdeszyfrować (wspólnym „hasłem” do Wi-Fi), aby mieć dostęp do ruchu HTTP.

Dla uproszczenia opisu nie wchodzimy w szczegóły przechwytywania ruchu sieciowego. Potwierdziliśmy jednak możliwość wykonania ataku z innego komputera z pomocą narzędzi aircrack-ng i Wireshark.

W przechwyconej komunikacji z serwerem poczty WP poszukujemy ciasteczka o nazwie „wpsticket”. Oprócz tego bonusowo od razu dostajemy identyfikator konta, imię, nazwisko oraz znak zodiaku właściciela konta.

Przechwycony identyfikator zapisujemy.

Wstrzykujemy ciasteczko

Tworzymy ciasteczko o nazwie „wpsticket” z przechwyconym tokenem na drugim komputerze. Odwiedzamy stronę poczty WP.

W wariancie prostym ciasteczko może być stworzone ręcznie z pomocą Cookie Managera. Operację tę można oczywiście zautomatyzować (np. przez inserty do bazy SQLite z ciasteczkami albo używanie narzędzi deweloperskich przeglądarki).

Czytamy cudzą pocztę

Po wejściu na stronę poczty naszym oczom ukazują się wiadomości z konta, dla którego token przechwyciliśmy – bez żadnego logowania. Możemy czytać, pisać i usuwać wiadomości…

Na zrzucie ekranu ładnie widać, że WP zaakceptowało nasz przechwycony token i w odpowiedzi zwróciło inny, wraz z serią nowych ciasteczek. Jednak na szczęście nowy token dotyczy tej samej sesji i po wylogowaniu się prawowitego użytkownika dostęp atakującego również zostaje zakończony.

Niestety to nieodosobniony przypadek

Problem nie jest nowy. OWASP – organizacja zajmująca się bezpieczeństwem – od lat wymienia ataki typu Broken Authentication (w tym właśnie eksponowanie tokenów sesyjnych i przechwytywanie sesji) na drugim miejscu, zaraz po różnego rodzaju wstrzyknięciach (m.in. SQL injection).

Zdjęcie: OWASP Foundation – CC-BY-SA 3.0

O ile atak wydaje się wymagać odrobiny wiedzy technicznej, to nie zawsze tak musi być. Na początku tego dziesięciolecia wielcy światowi gracze, jak Google, Facebook czy Twitter, stosowali podobne podejście z szyfrowaniem ruchu tylko do kluczowych miejsc w systemach. Aby skłonić ich do porzucenia tej praktyki, stworzony został dodatek do Firefoxa Firesheep, który bez opuszczania okna przeglądarki pokazywał listę użytkowników popularnych serwisów w naszej sieci i jednym kliknięciem umożliwiał przejęcie dostępu do ich kont.

Zdjęcie w oparciu o http://codebutler.com/firesheep – Eric Butler 2010

O podatności wtedy stało się głośno, co poskutkowało. Niestety w Polsce (i nie tylko) nadal jest sporo serwisów czekających na dorośnięcie do właściwego zabezpieczania świadczonych usług. Czy musi powstać Firesheep dostosowany do polskich warunków, aby to zmienić?

Podatność i WP

Wirtualna Polska ma świadomość istnienia problemu. Obecnie przeprowadzana jest migracja kont na nową platformę, która jest w pełni dostępna po HTTPS. Wszystkie nowe konta zdają się być automatycznie zabezpieczone przed atakiem, niestety termin zakończenia migracji milionów starych kont nie jest znany. WP nie udostępnia również mechanizmu wymuszenia przełączenia na nową platformę dla użytkowników, którym zależy na bezpieczeństwie. Mogą oni jedynie siedzieć i czekać.

Wysłaliśmy do WP poniższe pytania. Odpowiedział nam rzecznik prasowy Michał Siegieda.

Jakie działania przedsięwzięła Wirtualna Polska w celu uniemożliwienia przejmowania kont pocztowych z związku z używaniem nieszyfrowanego protokołu HTTP?

Do tej pory we wszystkich formularzach z hasłami przesyłaliśmy je wyłącznie szyfrowanym kanałem, zaś sam system sesji gwarantował, że po wylogowaniu nie można było skorzystać z ukradzionego ciastka. Dodatkowo posiadamy systemy analizujące anomalie ruchów użytkownika w celu potencjalnej blokady przejęcia.

Kiedy cała komunikacja w kliencie webowym Poczty WP będzie odbywała się po HTTPS dla wszystkich użytkowników?

Wprowadzamy szyfrowaną komunikację na kilku kanałach równocześnie. Jednym z nich jest wspomniana nowa platforma, korzysta z niej już ponad 60% aktywnych użytkowników oraz wszystkie nowo założone konta. Innym kanałem, z tych najbardziej znaczących, jest interfejs webowy starego systemu, w którym brak pełnego szyfrowania – zdajemy sobie sprawę – jest najbardziej dyskusyjny. W tym drugim przypadku pełne szyfrowanie planujemy wdrożyć w najbliższych tygodniach, zwłaszcza przed przełączeniem wszystkich kont na nową platformę.

Czy do tego czasu istnieje sposób na przełączenie swojego konta na „Nową Pocztę WP”?

Kolejne konta są przełączane sukcesywnie. Jeżeli komuś zależy na szybszym skorzystaniu z nowej platformy, prosimy o kontakt z Helpdeskiem. W międzyczasie przygotowujemy dostęp do poczty przez dedykowaną aplikację mobilną dla iOS oraz Androida, skorzystanie z aplikacji będzie równoznaczne z migracją konta na nową platformę.

Mam pocztę w WP, co dalej?

Jeżeli po zalogowaniu jesteś przekierowywany na nowapoczta.wp.pl po HTTPS, ten problem Cię nie dotyczy – zostałeś już zmigrowany.

Jeżeli jednak w adresie jest poczta.wp.pl i nie masz „kłódeczki”:

  • ogranicz korzystanie z klienta webowego WP do sieci opartej o połączenie kablowe lub chociaż do „zaufanych” sieci bezprzewodowych, w których nie ma osób chcących czytać Twoją pocztę (zabezpieczone sieci hotelowe i publiczne hotspoty zdecydowanie odpadają),
  • zapytaj WP, w jaki sposób dla Twojego konta będziesz mógł czytać pocztę w przeglądarce po HTTPS,
  • jeżeli musisz korzystać z klienta webowego poczty w różnych miejscach, możesz wykupić dostęp do Poczty Pro, w którym ruch w całości jest szyfrowany,
  • używaj VPN przy korzystaniu z internetu w niezaufanych sieciach – nie rozwiązuje to problemu, ale przesuwa go w zazwyczaj mniej dostępne dla atakującego miejsce,
  • stosuj dwuskładnikowe uwierzytelnianie (2FA/MFA), gdzie jest to możliwe – ogólnie utrudnia do przejęcie innych kont.

Z jakich innych usług wymagających zalogowania, ale dostępnych potem przez nieszyfrowane HTTP korzystasz? Napisz to w komentarzu.