Czasem kilka drobnych błędów w konfiguracji serwera www może przerodzić się w poważny problem. W przypadku Empik.com takie właśnie błędy mogły doprowadzić do wycieku danych osobowych klientów firmy i innych potencjalnie wrażliwych danych.
Błędy typu „ujawnienie informacji” często traktowane są jako problemy drugiej lub trzeciej kategorii. Nie prowadzą do nieautoryzowanego wykonania kodu na serwerze, nie umożliwiają manipulacji zawartością bazy danych ani nawet jej odczytu i rzadko ich bezpośrednim skutkiem jest wyciek wrażliwych informacji. Tym razem jednak mogło być inaczej.
Błąd znany od 14 lat
Anonimowy czytelnik wskazał nam na istnienie w serwisie internetowym Empik.com dość trywialnego błędu – administratorzy serwera www włączyli moduł mod_status i zapomnieli ograniczyć do niego dostęp. Sam błąd znany jest od roku 1999 i kiedyś już go opisywaliśmy. Na serwerze Empik.com był obecny co najmniej od roku. Pozwalał on dowolnemu użytkownikowi, który otwarł w przeglądarce link
http://www.empik.com/server-status
na zapoznanie się z kilkoma ciekawymi informacjami. Po pierwsze moduł wyświetla statystyki działania serwera.
Raj dla podglądaczy (i pentesterów)
Statystyki, choć czasem ciekawe, nie są jednak najciekawsze. Dużo bardziej interesująca może być lista otwartych sesji http/https. Zawiera ona adresy IP klientów, status połączenia, otwierane linki oraz powiązane z nimi lokalne zasoby. Jej fragment wygląda na przykład tak:
Na żywo działanie modułu możecie zobaczyć np. na stronie apache.org (ponieważ serwis Empik.com rzeczony moduł już wyłączył). Jak się pewnie domyślacie, zanim funkcjonalność została wyłączona, na liście sesji http, oprócz informacji, kto czego w sklepie szuka, można było trafić na różne perełki.
Faktury z danymi klientów
Najpoważniejszym problemem, o którym się dowiedzieliśmy, był dostęp do danych osobowych części klientów sklepów internetowych Empik.com oraz Smyk.com. Dotyczył on według naszej wiedzy klientów, którym wystawiono faktury korygujące. Obrazy tych faktur, w plikach PDF, były dostępne bez żadnej autoryzacji dla każdego, kto poznał odpowiedni link, na przykład
http://infopunkt.empik.amg.net.pl/faktury_spl/20130831/95445_08_ECS2K_13_DUPLIKAT.pdf
Jak pewnie się domyślacie, manipulacja fragmentem linku odpowiedzialnym za numer faktury oraz datę pozwalała na wyświetlenie kolejnych lub poprzednich faktur. Przykładowa faktura wyglądała tak:
Choć podgląda sesji http pozwalał na zapoznanie się z adresami URL mechanizmów obsługi klienta, zazwyczaj dostępnych jedynie dla obsługi, to dostęp do tych mechanizmów był prawidłowo zabezpieczony za pomocą autoryzacji www. Niestety tym samym zabezpieczeniem nie objęto folderów z obrazami faktur.
Publicznie dostępne API
Podobny – choć na szczęście już lżejszy w potencjalnych skutkach – problem był z dostępem do sklepowego API. Znajomość odpowiednich linków oraz przekazywanych w nich kluczy pozwalała dowolnemu użytkownikowi na generowanie różnych zestawień w formacie json – np. listy produktów oferowanych w danej kategorii. Np. wywołanie adresu (kluczowe zmienne ukryte)
https://services.empik.com/bobile-api/v2/mob/pl/productLists?signature=xxx&nonce=yyy&category_id=3501
dawało w odpowiedzi
{"productLists":[{"items":[{"author":"Roberts Nora","format":"EPUB","size":"0.6","title":"Alex. Szczęśliwa pomyłka","price":{"currency":"PLN","amount":32.99},"owned":false,"rateCount":0,"rateScore":0.0,"basePrice":null,"flags":{"top":false,"payback":true,"exclusiveness":false,"okazja":false,"patronate":false,"bestRoku":false,"nowosc_beauty":false},"category_id":["35010116"],"product_id":"p1068464234","cover_url":"http://ecsmedia.pl/c/alex-szczesliwa-pomylka-a-iext21483076.jpg"} itd.
A mógł to być tylko wierzchołek góry lodowej
Tak jak wspominaliśmy, możliwość podglądu aktywnych sesji http dawała atakującemu możliwość zapoznania się z pełna strukturą mechanizmów obsługi klienta, działających w oparciu o serwis www, dostępny z zewnątrz. Wiedza ta (jak chociażby prawidłowe parametry zapytań POST lub GET) mogła dać podstawę do prób przeprowadzania ataków (chociażby SQLi czy XSS), których skutki mogły być znacznie bardziej poważne.
Jak więc widać, nawet banalne błędy w konfiguracji modułów serwera www oraz uprawnień do zdawało by się trudnych do namierzenia plików mogą okazać się poważnym zagrożeniem dla bezpieczeństwa danych. Według naszych informacji błędy te występowały w witrynie Empik.com co najmniej od roku. Na szczęście po otrzymaniu od nas informacji o ich istnieniu, serwis szybko poprawił odkryte usterki. Poniżej przedstawiamy oficjalny komunikat, przekazany przez Dorotę Bachman, Dyrektora ds. Marketingu i Rozwoju Biznesu E-commerce Services, spółki prowadzącej sklepy Empik.com i Smyk.com:
Zidentyfikowana luka występowała na serwerze technicznym, działającym poza platformową sklepową, który służy do przechowywania faktur korygujących w postaci plików pdf. Sytuacja nie stanowiła żadnego zagrożenia dla bezpieczeństwa kont klientów, które są zlokalizowane w odrębnym systemie i przechowywane na oddzielnych serwerach.
Luka została przez nas naprawiona bezpośrednio po otrzymaniu informacji o jej zaistnieniu.
Komentarze
otwarł?
Gdybyś otwarł lub otworzył słownik języka polskiego, to zobaczyłbyś, że obie formy są poprawne.
słownik ortograficzny, nie sjp
Jakby ktoś miał wątpliwości, polecam pwn – słownik i poradnię:
http://poradnia.pwn.pl/lista.php?id=10279
http://so.pwn.pl/lista.php?co=otwar%B3a
komentarze takie na temat wow wow dyskusja taka merytoryczna wow
a widział ty kiedyś sklep, który na drzwiach ma napisane „godziny otworzenia” ? albo który ma tabliczkę „otworzone” ?
Ja jeszcze nie, ale kto wie, może na PKP lub Poczcie Polskiej już wktrótce. Wszak mają powszechne „Przerwa technologiczna. Przepraszamy!”, więc mogliby też „Otworzone. Zapraszamy!”.
już myślałem że ktoś wykradł pół bazy czy przynajmniej hasła
„adres IP klientów” – przecież widać na skrinie że to IP jakiegoś ich serwera wewnętrznego/pośredniczącego a nie konkretnych klientów
„publicznie dostępne API” – wchodzę na ich stronę i widzę te same dane
cienkie te rewelacje, artykuł na poziomie artykułów onet’owych :P
Fragment o dostępie do faktur (zapewne tysięcy klientów) przeoczyłeś przypadkowo czy celowo?
Publiczne adresy IP również pojawiały się w logu – choć nie zawsze.
Jeśli API miało być dostępne publicznie, to ciekawe, czemu nie było do niego linku na głównej…
może niesłusznie potraktowałem fragment o fv jako mało istotny, ale po przeczytaniu nagłówka „błąd znany od 14 lat” sugerującego że to u nich jest ten błąd od 14 lat, cały artykuł stracił dla mnie na wartości
wracając do faktur to nie jest podane ile rzeczywiście wyciekło, żadnych szacunków
piszesz „zapewne tysiące” – rozumiem że nie wiadomo ile, ja tutaj widzę jedną, może to jest faktura anonimowego donosiciela ;), nie widzę potwierdzenia dla „zabezpieczeniem nie objęto folderów z obrazami faktur” – gdyby był podany screen z listingiem katalogu wtedy byłoby potwierdzenie „tysięcy”
jeżeli chodzi o API to przypuszczam że jest to rozwiązanie dla jakiegoś partnera, może dają je tylko dla zainteresowanych, dane są ogólnodostępne więc nie ma sensu jakoś szczególnie tego zabezpieczać, druga sprawa to chyba bez sensu byłoby pokazywać to na stronie głównej, gdzie 99,99% użytkowników tego nie potrzebuje :)
morał: jaki kraj taki wyciek ;)
No to jeszcze gwoli wyjaśnienia, bo może niedostatecznie dużą czcionką napisano w artykule.
Błąd od 14 lat – w tym akapicie wyraźnie napisano, że błąd, znany od 14 lat, od co najmniej roku występował na serwerze Empik.com.
Co do faktur – również wyraźnie napisano, że wystarczyło zmienić numer faktury, by zobaczyć kolejne dokumenty. Umieszczanie zrzutów ekranu 5 czy 50 faktur chyba było bez sensu.
Sebastian Malinowski :)
Co jeśli dostępne są dane po dopisaniu server-status do adresu, ale są skrócone – ExtendedStatus Off, czy da się z tego wyciągnąć jakieś informacje?