Jak czytać za darmo internetowe wydania dużych polskich gazet

dodał 7 sierpnia 2012 o 11:45 w kategorii Top, Wpadki  z tagami:
Jak czytać za darmo internetowe wydania dużych polskich gazet

Rzeczpospolita, Dziennik Gazeta Prawna, Parkiet, Puls Biznesu – wszystkie te gazety (lub czasopisma) stosują dalekie od doskonałości systemy dostępu do swoich wydań internetowych, umożliwiając ich darmową lekturę każdemu internaucie.

Systemom ich zabezpieczeń przyjrzał się – i w szczegółach opisał metodę ich pokonania – Wojtek Bojdoł, którego artykuł publikujemy poniżej.

Uwaga
Wojtek dostarczył nam kod „alternatywnych czytników”, których działanie potwierdziliśmy. Kod opublikowanych przez nas poniżej czytników został celowo uszkodzony – stanowi on jedynie materiał edukacyjny.

 W głębokim ukryciu, czyli rzecz o prasie

Rynek prasy od kilku lat znajduje się w głębokim kryzysie. Zmieniają się nawyki czytelników oraz budżety reklamodawców przeznaczane na publikacje w prasie. Na szczęście spadają koszty funkcjonowania redakcji – w dobie dziennikarstwa obywatelskiego nie trzeba już utrzymywać tylu etatowych dziennikarzy. W czasach CTP i powszechnie akceptowanego w drukarniach formatu PDF spadają również koszty przygotowania do druku. Oczywiście – czasami kierownictwo gazety idzie zbyt daleko i zwalnia na przykład dział korekty – to jednak każdy czytelnik zauważa od razu.

Analizując bezpieczeństwo serwisów internetowych największych wydawnictw możemy patrzeć na wyniki analiz przez pryzmat problemów finansowych, kryzysu i wszechobecnych cięć kosztów. Czy jednak brak zabezpieczeń możemy tłumaczyć brakiem środków? Czy możemy przypuszczać, że gdyby gazety były bogate, to nie oszczędzałyby na bezpieczeństwie? Po serii spektakularnych wycieków danych w ostatnich latach możemy przypuszczać że pieniądze nie są tu czynnikiem różnicującym. Akceptacja zagrożeń to raczej wynik pewnego stanu umysłu osób, podejmujących decyzje o alokacji środków.

Tworzymy małą gazetę

Wyobraźmy sobie, że tworzymy małą gazetę. Chcemy ją wydawać zarówno w internecie, jak i w wersji papierowej. Użytkownikom chcielibyśmy sprzedawać dostęp do artykułów nie tylko w wersji cyfrowej, ale również w wersji zbliżonej do drukowanej. O ile wybrany przez nas system zarządzania treścią może pozwalać na dostęp do artykułów tylko zalogowanym użytkownikom, o tyle udostępnianie dużych plików graficznych niesie ze sobą pewne komplikacje. Zwłaszcza, gdy idzie nam dobrze i zyskujemy wielu czytelników – wtedy ważna staje się skalowalność.

W pewnym momencie może przyjść nam do głowy pomysł, by po prostu wgrywać pliki pdf lub jpg do katalogu na serwerze i wysyłać linki do tych plików zalogowanym użytkownikom. Dzięki takiemu rozwiązaniu osoba, która posiada  link do pliku, automatycznie zyskuje prawo do jego odczytania. Tak właśnie powstaje typowe głębokie ukrycie. Jeśli użytkownik odgadnie  metodę tworzenia przez nas linków, będzie mógł czytać za darmo naszą gazetę, a jedyne, co znajdziemy w naszych logach serwera, to jego adres IP. Do tego nie możemy go oskarżać o przełamanie zabezpieczeń, bo żadnych zabezpieczeń do przełamania nie było.

Jaką korzyść przynosi nam wybór takiej architektury? Udostępnienie statycznych plików graficznych bez żadnej autoryzacji jest rozwiązaniem wysoce  skalowalnym. Wystarczy nam mały serwer z demonem ngnix lub innym o zbliżonej architekturze. Taki serwer www będzie bardzo wydajny i szybki, ponieważ nie musi uruchamiać procesów weryfikacji ani wewnętrznych skryptów serwisu.

Oczywiście, jeśli jesteśmy małą gazetą i nie mamy pieniędzy na sprzęt, takie rozwiązanie może nas w pełni satysfakcjonować. Jedynym naszym zabezpieczeniem będą losowe ciągi znaków znajdujące się w ścieżkach dostępu do poszczególnych plików, dzięki którym nawet jeśli ktoś dostanie od nas link do jednego numeru, nie będzie mógł zgadnąć linku do kolejnego wydania.

A co jeśli jesteśmy tak dużym wydawnictwem jak Rzeczpospolita?

Zobaczmy, jak oni poradzili sobie z tym problemem. Są więksi od nas, więc może zaimplementowali jakieś ciekawe rozwiązania.

Trudno mi powiedzieć, kiedy ten system powstał i dlaczego jest taki dziwny. Jedno jest pewne – rok temu redaktor naczelny gazety nie raczył nawet odpowiedzieć na emaila z informacją o braku zabezpieczeń. Nic dziwnego – ich firma miała być sprzedana i nie wiedzieli jeszcze, jaki będzie ich los.

Wdrożone przez Rzeczpospolitą rozwiązanie jest całkiem ciekawe. Plik graficzny zawierający obraz jednej kolumny jest cięty na małe kawałki według 3 pionowych i 5 poziomych linii cięcia. Każdy kawałek układanki zapisywany jest w osobnym pliku. Takie puzzle dla czterolatków. Zabezpieczenie bardzo ciekawe, które pozwala, by każdy z plików był dostępny bez autoryzacji.

Gdyby tylko nazwy plików były losowe, takie rozwiązanie mogłoby być bardzo skuteczne. Zbiór nazw poszczególnych puzzli byłby małym plikiem tekstowym dostępnym dopiero po autoryzacji, natomiast pliki graficzne – mogłyby być serwowane przez dowolny mechanizm CDN. Niestety w Rzeczpospolitej nie wpadli na ten prosty pomysł. Poniżej zamieszczamy przykład prostego czytnika HTML, który generuje podgląd dowolnej strony dowolnego wydania jednej z dwóch gazet wydawnictwa: Rzeczpospolitej lub Parkietu (i przy okazji archiwum Życia Warszawy). Kod tego czytnika to mniej niż 1,5 kilobajta.

Alternatywny czytnik Rzeczpospolitej oraz Parkietu – kod źródłowy.

Jak widać na przykładzie załączonego kodu, nazwy katalogów są w pełni przewidywalne – pliki puzzla konkretnego wydania leżą w katalogu /Reader/pages/ + nazwa gazety + / + numer wydania + / + nazwa gazety + numer strony + numer puzzla + .png. Oczywiście, by osiągnąć odpowiedni poziom zabezpieczeń, w przypadku mechanizmu puzzli nie musimy używać skomplikowanych nazw katalogów. Wystarczy, że nazwy poszczególnych puzzli będą losowe – co nie ma tutaj miejsca.


Pierwsza strona Rzeczpospolitej


Pierwsza strona Parkietu

Co słychać w Pulsie Biznesu

Niestety, inne wielkie wydawnictwo zrobiło jeszcze większy błąd. Ich wersja podobnego czytnika ze względu na brak mechanizmu puzzli, zajmuje „aż” 378 bajtów.

Alternatywny czytnik Pulsu Biznesu – kod źródłowy.


Pierwsza strona Pulsu Biznesu

Tak, wydawnictwo Bonnier Business Polska też chyba było na sprzedaż gdy powiadomiłem ich o błędzie. Widać jednak pewne postępy – obecnie wdrażają nowy, nieco bardziej bezpieczny czytnik, dlatego stary pewnie kiedyś wyłączą. Nie wiem, czy przyczyną było moje zgłoszenie,  ale przynajmniej wyłączyli mechanizm generowania indeksów.


Serwer Pulsu Biznesu miał kiedyś włączone indeksowanie plików

Dziennik Gazeta Prawna, czyli czy można jednak zrobić coś jeszcze gorszego?

Niestety tak. I tu z pomocą przychodzi inne wielkie polskie wydawnictwo – Dziennik Gazeta Prawna. Stworzyło ono dość ciekawe i oryginalne rozwiązanie, w którym skrypt php, weryfikujący parametry wejściowe, serwuje gotowe pliki jpg. Rozwiązanie jest ciekawe, ponieważ  skrypt potrafi wygenerować nam plik jpg w dowolnie wybranych przez nas rozmiarach, dzięki czemu możemy czytać gazetę nawet w rozdzielczości HD. Jaki to ma wpływ na wydajność serwera? Jest to jeden z wolniejszych czytników jaki spotkałem :)

Alternatywny czytnik Dziennika Gazety Prawnej – kod źródłowy.

No dobrze, ale skoro wszystko przechodzi przez skrypt php, to w czym problem? Przecież aplikacja może weryfikować uprawnienia użytkownika i oceniać, czy ta kolumna jest dla niego dostępna, czy też wymaga autoryzacji. Niestety, na to pytanie nie odpowiem. Prawdopodobnie ktoś zapomniał włączyć funkcję autoryzującą.


Pierwsza strona DGP

Zajrzyjmy na deser do Agory

Na początek uspokoimy czytelników – nie, w obecnie funkcjonującym systemie czytnika Gazety Wyborczej nie ma już błędów tej kategorii, co opisane powyżej. Jeszcze rok temu było jednak zupełnie inaczej.

Gazeta Wyborcza poszła w innym kierunku – każda kolumna była pojedynczym plikiem pdf. Gazeta jest dość nowoczesna i swoje pliki przechowuje w chmurze, korzystając z usługi S3 Amazona. Zgodnie z dobrą praktyką czytnik online pobiera nazwy plików zawierających kolejne kolumny z pliku xml dostępnego na innym serwerze. Pech chciał jednak, że rok temu ktoś zapomniał o stworzeniu dla tych plików mechanizmu autoryzacji. Co więcej – zapomniał nawet wyłączyć w serwerze www automatyczne tworzenie indeksów katalogów. Dzięki temu każdy użytkownik internetu mógł pobrać pliki z dowolnego katalogu, jak widać poniżej.


Kiedyś serwery Wyborczej udostępniały indeksy plików

Co więcej, pliki xml były wtedy pobierane przez czytnik z lokalizacji, które były w pełni przewidywalne. Dlatego, nawet po wyłączeniu indeksowania, każdy użytkownik mógł odgadnąć nazwę katalogu, w którym znajduje się xml związany z konkretnym wydaniem. Na szczęście Gazeta inwestuje w IT i poprawiła nieco w ciągu ostatniego roku swój czytnik, uniemożliwiając wnikliwym internautom darmową lekturę Obecnie pomimo, że sam plik xml jest dostępny na S3 bez autoryzacji, jego nazwa sprawia wrażenie losowej i trudnej do odgadnięcia.

Głębokie ukrycie

Wydaje się, że najlepiej sytuacje opisuje to właśnie sformułowanie, użyte przez inną dużą firmę przy innej, również kompromitującej okazji. Czy takie metody zabezpieczania serwisów www w ogóle powinny być dopuszczalne? Czy faktycznie problemem jest budżet, czy raczej społeczne przyzwolenie na tandetę?

Na te pytania na pewno muszą odpowiedzieć sobie szefowie wyżej wymienionych wydawnictw. Z naszej strony – zapewniamy im wyniki naszej analizy bezpieczeństwa za darmo. Niech żyją nasi drodzy dziennikarze! :)

Aktualizacja
Jak się dowiadujemy, podobne problemy z prawidłowym zarządzaniem dostępem ma również dziennik Polska Times oraz jego dodatki regionalne.