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: gazeta.pl. open redirect, otwarte przekierowanie
Kategoria: Bezpieczeństwo, Bezpieczeństwo aplikacji internetowych
Rozumiem, że przykład, który podałeś, jest zdecydowanie przykładem negatywnym? ;)
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 :)