Łukasz Pilorz
msgbartop
Bezpieczeństwo aplikacji PHP
msgbarbottom

17 Dec 06 Porównanie wybranych aspektów bezpieczeństwa polskich serwisów aukcyjnych

Poniższy tekst mojego autorstwa ukazał się pierwotnie w serwisie aukcje.org, za co bardzo dziękuję panu Jackowi Strzembkowskiemu.

eBay, Allegro i Świstak - krótkie porównanie wybranych aspektów bezpieczeństwa polskich serwisów aukcyjnych

Poniższe zestawienie jest trochę nierówne - przy testach Allegro spędziłem dobrych kilkanaście wieczorów, podczas gdy na stronach ebay.pl i swistak.pl ledwie po kilka godzin. Przepraszam właścicieli wszystkich pominiętych w tym tekście polskojęzycznych serwisów aukcyjnych.

1. Szyfrowanie połączenia

Oczywiście wszystkie trzy serwisy stosują SSL dla formularzy logowania użytkownika. Zapobiega to podsłuchaniu hasła - niestety tylko podczas logowania. Na http://www.swistak.pl/konto_nowe.html przesyłamy hasło w postaci nieszyfrowanej (możemy wymusić szyfrowanie, wpisując ręcznie adres https://ssl.swistak.pl/konto_nowe.html), podobnie jest podczas zmiany dotychczasowego hasła w ustawieniach użytkownika serwisu Allegro.

Zastanawia “złamana kłódka” na szyfrowanych stronach Świstaka - okazuje się, że serwis korzysta ze skryptu statystyk gemius.pl, importując go przez nieszyfrowane połączenie HTTP. Nie powoduje to bezpośrednio możliwości ujawnienia hasła, ale:

  • użytkownik, który na bezpiecznej stronie widzi złamaną kłódkę, nie będzie mógł odróżnić jej od strony fałszywej,
  • bezpieczeństwo hasła staje się zależne od bezpieczeństwa serwisu statystyk - każda osoba mająca kontrolę nad importowanym skryptem (http://adnet.hit.gemius.pl/pp_gemius.js) może niepostrzeżenie przesyłać wpisywane hasła użytkowników poza serwis.

Połączenie z gemius.pl lepiej realizuje Allegro - wykorzystuje w celu zapisywania danych bezpieczny skrypt z własnej domeny, a w przypadku połączenia SSL w ogóle ze statystyk na stronie logowania rezygnuje.

[Problem "złamanej kłódki" został przez serwis Świstak bardzo szybko zlikwidowany.]

2. Otwarte przekierowania

Skrypty podobne do https://ssl.allegro.pl/direct_login.php?request_server=lukasz.pilorz.net&request=/index.php to świetne narzędzie dla phisherów (powyższy przykład jest dodatkowo podatny na XSS). Niestety podobne luki ma również eBay, mimo że są one od dłuższego czasu aktywnie wykorzystywane.

3. CSRF

Jak zauważył pan Strzembkowski, Allegro (Świstak również) w wielu miejscach nie rozróżnia danych przychodzących metodami GET i POST. Samo w sobie nie jest to luką, natomiast ułatwia ataki CSRF (niektóre z nich można dzięki temu wykonać bez użycia aktywnych skryptów w przeglądarce ofiary). O ile wysłanie spreparowanego żądania POST ze strony opisu aukcji jest praktycznie niemożliwe (dzięki skutecznemu filtrowi treści), o tyle żądanie GET jest banalne do uzyskania, na przykład przy pomocy znacznika img.

Większość istotnych formularzy broni się przed takim atakiem przy pomocy dodatkowych, nieprzewidywalnych dla atakującego parametrów. eBay zrobił to konsekwentnie, natomiast w Allegro atakujący nadal może na przykład wysłać w naszym imieniu email lub zalicytować w aukcji. Ponadto tego typu obrona jest nieskuteczna między innymi:

  • jeżeli jakakolwiek strona w tej samej domenie jest podatna na XSS,
  • jeżeli przeglądarka użytkownika jest podatna na mhtml-redirect lub inną naruszającą zasadę same-domain lukę.

Tutaj również plus dla eBay, ponieważ najistotniejsze elementy są chronione mechanizmem CAPTCHA, z dużym prawdopodobieństwem eliminującym obie powyższe metody. Niezależnie od serwisu aukcyjnego, użytkownik może się dodatkowo bronić, zamykając wszystkie inne okna/zakładki przeglądarki przed zalogowaniem, wpisując adres serwisu ręcznie, oraz nie wchodząc wewnątrz serwisu na odnośniki prowadzące do zewnętrznych stron (na przykład w opisach aukcji).

4. XSS

Luki tego typu są tak powszechne, że nie dziwi specjalnie fakt, iż wszystkie trzy testowane platformy aukcyjne są podatne na XSS. W przypadku eBay skutki są mniej poważne ze względu na podział serwisu na wiele subdomen oraz wykorzystanie CAPTCHA do weryfikacji istotniejszych formularzy. W Allegro i Świstaku możliwe jest przy pomocy XSS na przykład wykradnięcie hasła następującymi metodami:

  • przez podrobienie atakiem XSS formularza logowania i wczytanie jego danych, jeśli użytkownik stosuje mechanizm zapamiętywania hasła w przeglądarce (testowałem w Firefoxie 2.0, prawdopodobnie po odpowiedniej modyfikacji może zadziałać też w Internet Explorerze 6),
  • przez wykorzystanie ataku CSRF do zmiany adresu e-mail, następnie wczytanie ustawień użytkownika, i w końcu użycie mechanizmu przypomnienia hasła do jego zmiany; taka możliwość została zgłoszona w Allegro 18 września i nadal istnieje - chociaż wystarczyłoby w celu obrony żądać hasła przy zmianie adresu e-mail użytkownika lub tak jak eBay wykorzystać w tym miejscu CAPTCHA; w Świstaku ten scenariusz ataku jest jeszcze łatwiejszy do zrealizowania.

Druga z tych metod, tak jak większość ataków CSRF, jest możliwa do wykorzystania również bez żadnej luki XSS, jeżeli przeglądarka ofiary jest podatna na luki naruszające zasadę same-domain (obecnie znana i niezałatana luka tego typu, mhtml-redirect, dotyczy Internet Explorera w przypadku gdy w systemie obecne są biblioteki dll Outlook Expressa - czyli praktycznie we wszystkich Windowsach poza Vistą).

5. Powiadomienia

Ostatnią linią obrony przed atakami XSS i CSRF jest system powiadomień o istotnych wydarzeniach dotyczących konta użytkownika: rozpoczęciu aukcji, udziale w licytacji, zmianie ustawień itp. W Allegro ten system jest bardzo dobry, jednak eBay poszedł jeszcze dalej - poza powiadomieniem mailowym, tworzone są dodatkowo tzw. alerty, widoczne w serwisie i nieusuwalne przez pewien czas, informujące o najistotniejszych zdarzeniach. Nawet jeśli użytkownik padnie ofiarą ataku CSRF, najprawdopodobniej dowie się o tym natychmiast, nawet jeśli nie sprawdza często skrzynki pocztowej.

Świstak po raz kolejny wypada w porównaniu najsłabiej - chociażby z powodu braku powiadomienia na stary adres e-mail przy jego zmianie.

6. No i co z tego…

Wspomniane przeze mnie problemy najprawdopodobniej nie dotkną zbyt wielu użytkowników serwisów aukcyjnych. Myślę jednak, że stopniowo coraz większy odsetek oszustw na aukcjach będzie wykorzystywać technologiczne możliwości wprowadzenia w błąd lub zwyczajnej kradzieży. Ponadto takie luki mogą być wykorzystywane nie tylko w celu uzyskania konkretnych korzyści finansowych, lecz czasem po to, by zaszkodzić serwisowi i obniżyć jego wiarygodność.

W tym krótkim zestawieniu widać, że eBay przyłożył największą wagę do jakości zabezpieczeń. Miał on największe ku temu powody - wraz z ilością użytkowników rośnie stopień zagrożenia, a polska odsłona serwisu jest przecież kopią platformy aukcyjnej znanej na całym świecie. Działania phisherów są co prawda powiązane zazwyczaj z jedną wersją językową, ale ataki XSS i CSRF działają w każdej tak samo. Można więc założyć, że “małe” Allegro, choć bardziej podatne na ataki, jest w praktyce niemal tak samo bezpieczne - przynajmniej jeszcze przez jakiś czas.



Leave a Comment