Aplikacje internetowe

Bełdziowe spojrzenie na aplikacje internetowe

Open redirect – zabezpieczenie na przykładzie Gazeta.pl

Czym są otwarte przekierowania można przeczytać w jednej z ostatnich notek na temat występowania tego błędu na stronach Wydawnictwa Helion. W poniższej notce skupimy się na sposobach zabezpieczenia serwisu przed tego typu podatnością na podstawie serwisów newsowych portalu Gazeta.pl.

Wiele z dostępnych artykułów w serwisach newsowych Gazety mają dołączone zdjęcia. Kliknięcie na dowolne zdjęcie przenosi nas na stronę galerii, w której dostępne są wszystkie obrazki powiązane z czytanym artykułem. W celu powrotu do czytanego newsa należy kliknąć odnośnik „powrót do artykułu” znajdujący się nad miniaturami zdjęć.

Sposób działania powrotu do artykułu jest bardzo prosty. W chwili wejścia na podstronę galerii do adresu URL doklejany jest parametr zawierający ścieżkę powrotu. Sposób ten może być problematyczne ze względu na to, że bazujemy na danych pochodzących od użytkownika. Zamiast tego można by wykorzystać javascriptową metodę odpowiedzialną za cofnięcie użytkownika na poprzednią stronę (history.back( ) / history.go( -1 )) lub po prostu zapisać ścieżkę powrotu w sesji. W obu alternatywnych sposobach również można dopatrywać się pewnych niedogodnień – wyłączony JavaScript / włączona obsługa ciastek, konieczność magazynowania dodatkowych informacji po stronie serwera.

Problem z danymi pochodzącymi od użytkownika został dość dobrze rozwiązany. Wszystkie potencjalnie niebezpieczne znaki (< > ( ) „ ‚ etc) zostają zamienione na znak backslasha uniemożliwiając przeprowadzenie ataku typu XSS. Niby problem rozwiązany, ale czy na pewno? Nikt nie uwzględnił sytuacji, w której napastnik zamiast szukać błędu technologicznego wstawi poprawny link, który przekieruje użytkownika na zewnętrzny serwis. Możliwości wykorzystania takowego zachowania serwisu jest kilka, zaczynając na phishingu (np. w sposób podobny do błędu z pasażu Wirtualnej Polski) na atakach CSRF kończąc. Można zadać pytanie, skoro nie możemy wywołać XSS jak przeprowadzić CSRF? Oczywiście nie mamy do dyspozycji pełnego spektrum możliwości jakie daje nam CSRF, aczkolwiek tak długo jak wrażliwa funkcjonalność dostępna jest w pełni za pomocą tablicy $_GET możemy śmiało z niej korzystać (np. www.adres.pl/usun_konto.php?potwierdzenie=tak).

Sposób ochrony przed powyższym niebezpieczeństwem jest bardzo prosty (jak prawie zawsze :)). Skoro powrót z galerii ma zawsze prowadzić do jednego z artykułów dostępnych w serwisie wystarczy sprawdzić czy ścieżka powrotu pasuje do wzorca adresu URL, jeśli tak wiemy, że coś jest nie tak – normalnie ścieżka powrotu nie zawiera adresu domeny serwisu.


http://technologie.gazeta.pl/technologie/3292000,82011,5964724.html?back=http://www.google.pl


Tagi: ,
Kategoria: Bezpieczeństwo, Bezpieczeństwo aplikacji internetowych


8 komentarzy

  1. Rozumiem, że przykład, który podałeś, jest zdecydowanie przykładem negatywnym? ;)

  2. negatywnym w jakim znaczeniu?

    // jeśli chodzi o to czy sposób, który aktualnie jest wdrożony na gazeta.pl jest negatywny to tak co obrazuje dołączony link pod screenem :)

  3. klaude napisał(a):

    Czyżby programiści z gazeta.pl zabezpieczyli się przed tą formą „ataku”? Po próbie wejścia na stronę z linku na końcu wpisu nic ciekawego nie dzieje się.

  4. z tego co kojarzę to chyba w poprzednim miesiącu poprawili

  5. Zaczynam poznawać zagadnienia bezpieczeństwa i interesuje mnie wszystko na ten temat. Mam takie pytanie – czy opisany tu problem może w jakiś sposób być groźny dla serwisu? Jak rozumiem doklejenie własnego tekstu w pasku przeglądarki przekieruje mnie na inną stronę. Ale przecież nie przekieruje nikogo innego. Wydaje mi się że problem byłby wtedy kiedy ktoś inny wchodząc na atakowaną stronę zostałby przekierowany. Sam w tym, co sobie tak dla sportu piszę doklejam parametry do GET, dlatego moje pytanie. Chyba sedno problemu jest tutaj – cytuję:
    „Nikt nie uwzględnił sytuacji, w której napastnik zamiast szukać błędu technologicznego wstawi poprawny link, który przekieruje użytkownika na zewnętrzny serwis.”
    Rozumiem to tak: napastnik wysyłając żądanie do serwera, dokleja adres pod który ma być przekierowanie. wtedy w tablicy GET znajdzie się jego parametr, który będzie wyświetlony w przeglądarce atakującego. I to on zostanie przekierowany. W jaki sposób zdoła przekierować innych?

  6. Musi im dostarczyć tak przygotowany link. Sposobów jest wiele i większość wykorzystuje to, że początek adresu sugeruje wejście na duży, znany serwis, więc ochrona związana z wchodzeniem na nieznane strony zanika.

  7. Czyli może to być groźne dla użytkownika, a dla serwisu pośrednio, bo podważa jego wiarygodność.

  8. Dokładnie.

Dodaj komentarz