W usłudze wniosków ratalnych serwisu Morele.net znajdowała się poważna luka – podając kolejne numery zamówień, można było odczytać ich kwoty oraz powiązane z nimi adresy e-mail i numery telefonów klientów sklepu.
Pod koniec 2018 roku Morele.net stały się (niechlubnym) bohaterem jednego z najpoważniejszych wycieków danych w historii polskiego internetu. Złodzieje dostali się do bazy serwisu i wykradli (a później także opublikowali) dane ponad dwóch milionów klientów sklepu. Spodziewaliśmy się, że po tamtym incydencie Morele.net staną się jednym z najlepiej zabezpieczonych serwisów w polskiej sieci, lecz życie pokazuje, że troska o bezpieczeństwo jest trudna, a droga do sukcesu – wyboista.
Zaskakujące zgłoszenie
W ostatni piątek odezwał się do mnie czytelnik, ukrywający się pod pseudonimem Norsu, by zgłosić błąd w serwisie Morele.net. Norsu próbował skorzystać z opcji zakupu na raty, lecz wniosek ratalny na stronie serwisu miał dziwne błędy – pokazywał nieprawidłową datę bieżącą oraz źle liczył miesiące od daty założenia działalności gospodarczej. Norsu zaczął przyglądać się stronie i odkrył coś, co w 2025 roku nie powinno się zdarzać.
Wniosek ratalny umieszczony był pod adresem:
https://morele.net/raty/[ID ZAMÓWIENIA]
Okazało się, że jeśli podmieniamy numer zamówienia z naszego na cudzy, to w formularzu pojawiają się informacje związane z cudzym zamówieniem. Mieliśmy zatem do czynienia z klasycznym błędem tzw. IDOR – niebezpieczne bezpośrednie odwołanie do obiektu. Jedynym wymaganiem było posiadanie zalogowanej sesji na dowolnym koncie.
Dodatkowym problemem była dostępność danych wszystkich dotychczasowych klientów – także tych, którzy złożyli zamówienie dawno temu i je opłacili, więc zdecydowanie nie potrzebowali już wniosku ratalnego.
Weryfikacja i reakcja
W sobotę usiadłem do komputera i przekopywałem się przez e-maile. Około godziny 16 dotarłem do wiadomości od Norsu i bez większego przekonania („No bez przesady, takiego błędu to na pewno nie mają…”) sprawdziłem, czy zobaczę swoje własne zamówienie sprzed paru lat. Założyłem konto na tymczasowego e-maila i wczytałem stronę
https://morele.net/raty/17913522
Wyobraźcie sobie moje zaskoczenie, kiedy na ekranie zobaczyłem kwotę zamówienia, swój adres e-mail oraz numer telefonu.
Szczęśliwie, po poprzednim incydencie miałem kontakt do CIO sklepu, więc o 16:27 wysłałem e-maila i na wszelki wypadek dodałem SMS-a o 16:45. Reakcja była ekspresowa – błąd był usunięty już o 18:46 tego samego dnia.
Stanowisko Morele
Otrzymaliśmy także oficjalne stanowisko firmy, które cytujemy w całości poniżej.
Po otrzymaniu zgłoszenia o podatności formularza ratalnego, nasze zespoły Security i IT zareagowały natychmiastowo i niezwłocznie zweryfikowały zgłoszoną sytuację. Podatność została potwierdzona i usunięta w ciągu 2 godzin od jej zgłoszenia. Przeprowadzona analiza wykazała, że ewentualne wykorzystanie podatności było ograniczone i wymagało jednoczesnego spełnienia kilku warunków – posiadania konta użytkownika, zalogowania się do systemu oraz wpisania numeru zamówienia. Podatność umożliwiała dostęp tylko i wyłącznie do wyświetlenia adresu e-mail oraz numeru telefonu.
Nasz dział Security, we współpracy z zespołem IT, dokładnie przeanalizował sytuację i jednoznacznie potwierdziliśmy, że nie doszło do wykorzystania podatności w celu nieuprawnionego pozyskania danych. Podatność została użyta wyłącznie w celach weryfikacyjnych przez zgłaszającego oraz dziennikarza, a wszelkie działania mieściły się w granicach odpowiedzialnego ujawnienia.
Bezpieczeństwo danych Klientów jest dla Morele.net absolutnym priorytetem. Nieustannie wdrażamy i rozwijamy rozwiązania podnoszące poziom bezpieczeństwa naszych systemów, aby skutecznie minimalizować ryzyko pojawiania się podobnych podatności w przyszłości. Dziękujemy za odpowiedzialne i szybkie zgłoszenie – tego typu sygnały pozwalają nam natychmiast reagować oraz jeszcze skuteczniej chronić dane naszych Klientów. Współpraca i zgłaszanie podatności przez użytkowników wpisuje się w najlepsze praktyki rynkowe, które stanowią ważny element ciągłego doskonalenia zabezpieczeń IT.
Ważną informacją jest potwierdzenie, że nikt nie wykorzystał luki do pobierania danych klientów. Temat „spełnienia kilku warunków”, które sprowadzają się do kilku kliknięć i zmiany cyfry w URL może już pominiemy…
Podsumowanie
Jednym z najbardziej wyświechtanych sloganów branżowych jest „bezpieczeństwo to proces”. Wyświechtanych, lecz nadal prawdziwych. Przejście audytu bezpieczeństwa nie tylko nie gwarantuje tego, że wszystkie błędy zostały znalezione (chociaż błąd opisany powyżej raczej nie umknąłby nawet początkującemu testerowi), ale przede wszystkim nie gwarantuje, że jutro ktoś nie stworzy kodu z trywialną luką. Wplecenie troski o bezpieczeństwo serwisu w procedury tworzenia / pozyskiwania kodu jest skomplikowane – ale jak widać na powyższym przykładzie, także niezbędne.