13:00
4/1/2018

Wystarczyło otworzyć narzędzia developerskie i rzucić okiem jakie dane serwis wymienia w tle z przeglądarką, aby zauważyć że jest ich więcej niż potrzeba. Jednemu z naszych czytelników udało się w ten sposób podejrzeć dane klientów firmy 4Mobility. Czytelnik odkrył i zgłosił problem, ale 4Mobility wątpiło, czy można mówić w tym przypadku o wycieku danych, bo metoda wedle firmy wymagała bardzo specjalistycznej wiedzy. Racja, w sumie nie każdy naciska F12 w trakcie przeglądania internetu…

F12 i widzisz dane innych!

Ten artykuł zaczyna się historią z sierpnia minionego roku, a kończy wpadką z grudnia. Obie dotyczą serwisu internetowego firmy 4mobility, samoobsługowej wypożyczalni samochodowej, w której do wynajęcia samochodu potrzebne są tylko prawo jazdy i smartfon.

Nasz Czytelnik Krzysztof Kachniarz odkrył, że istnieje możliwość przejrzenia bazy klientów 4mobility bez użycia żadnych specjalnych hackerskich ataków. Wystarczyło się zalogować i uruchomić narzędzia deweloperskie w przeglądarce. W zakładce Network, po rozpoczęciu rejestracji, zmienna users=… zwracała dane klientów (m.in. e-maile, numery telefonów, dane o aktywności w usłudze).

Zrzut podesłany przez Krzysztofa

Zrzut podesłany przez Krzysztofa

Zgłoszenie i łatanie

1 sierpnia Krzysztof Kachniarz zgłosił błąd przedstawicielom 4Mobility i równolegle dał nam znać o jego zaistnieniu. Przy okazji zaproponował, że każdy poszkodowany klient mógłby dostać rekompensatę w formie voucheru na bezpłatną jazdę, a dodatkowo 4mobility mogłaby przelać pewną kwotę na cel charytatywny.

4 sierpnia Krzysztof został zaproszony do siedziby firmy na spotkanie. Podziękowano mu za znalezienie luki i przeproszono za wyciek, ale na tym się skończyło. Jak napisał nam Krzysztof:

Na moje pytanie, czy firma planuje wydać oświadczenie prasowe, w którym poinformuje o wycieku oraz przeprosi swoich klientów, dostałem mglistą odpowiedź, że firma nie ma prawnego obowiązku poinformowania użytkowników o tego typu wydarzeniu wobec tego wolałaby nie nagłaśniać sytuacji. Na pytanie, czy planowane są jakiekolwiek rekompensaty dla użytkowników systemu, których dane wyciekły, pan Jerzy odpowiedział, że “przedstawiciele 4Mobility zastanawiają się nad tym

Co wyciekło?

To prawda, że firma taka jak 4Mobility nie miała obowiązku informować o wycieku. Niemniej byłoby to uczciwe i mogłoby zabezpieczać klientów przed negatywnymi skutkami wycieku. W sumie ujawnione dane mogły być przydatne w niektórych atakach, gdyż obejmowały:

  1. Dane osobowe i kontaktowe: imię, nazwisko, e-mail, numer telefonu, płeć, domyślna lokalizacja wypożyczenia samochodu.
  2. Wersję przeglądarki użytkownika.
  3. Adresy mailowe wszystkich administratorów.
  4. Historyczne i planowane wypożyczenia samochodu (w tym lokalizacja początkowa i końcowa!).

4Mobility mówi “Nie doszło do wycieku”. Naprawdę?

Redakcja Niebezpiecznika uzyskała w sprawie sierpniowego incydentu oficjalny komentarz od 4Mobility, choć nie było to całkiem łatwe. Firma nie odpowiadała na wiadomości wysyłane na adres do kontaktów z prasą. Dopiero rozesłanie e-maili do wszystkich możliwych osób w firmie poskutkowało uzyskaniem poniższego oświadczenia podpisanego przez Prezesa Zarządu Pawła Błaszczaka.

Poniżej przepisaliśmy istotne fragmenty, z których część pogrubiliśmy.

Spółka bezzwłocznie zareagowała na sygnał użytkownika (…) Dziękujemy Panu Krzysztofowi (…) dane osobowe nie zostały udostępnione w wyniku działań Spółki (…) nie było możliwości ich pozyskania przez użytkownika, w zwykłym toku czynności bez użycia specjalistycznej wiedzy i narzędzi deweloperskich. Zgodnie z oświadczeniem Pana Krzysztofa (…) dane osobowe nie zostały przez niego upublicznione (…) W związku z powyższym przedmiotowe zdarzenie nie doprowadziło do upowszechnienia i upublicznienia danych (…) Nie doszło też w tym względzie do “wycieku danych”.
Dodatkowo zakres danych Użytkowników nie obejmował danych (…) jak numer PESEL, adres, numer czy data wydania prawa jazdy.
(…)
4Mobility nie ma dostępu do danych dotyczących Kart płatniczych klientów (…) Dane z kart płatniczych (…) pozostają wyłącznie w systemie operatora płatniczego.

Pierwszy fragment pogrubiony to coś, z czym moglibyśmy dyskutować. Użycie narzędzi deweloperskich w przeglądarce nie jest może standardowym działaniem każdego użytkownika, ale trudno je nazwać “specjalistyczną wiedzą”. Wspomniane “narzędzia deweloperskie” to element przeglądarki, a naciśnięcie F12 to nie jest jakieś wielkie hakerstwo. O istnieniu “narzędzi deweloperskich” wiedzą nie tylko deweloperzy i pentesterzy, ale mnóstwo innych ludzi i nawet niektóre dzieci (jeśli są bardzo zdeterminowane by pobierać pliki multimedialne z niektórych stron).

Ponieważ niniejszy incydent był z gatunku mniej istotnych, odłożyliśmy go do szuflady, jak to zwykle robimy, aby złączyć publikację z podobnym problemem, który — jak pokazuje praktyka — prędzej czy później zostanie do nas zgłoszony i będzie dotyczył innej firmy, ale takiego samego błędu.

No i trochę się zdziwiliśmy, bo w istocie podobny problem do nas po kilku miesiącach spłynął. Ale nie dotyczył innej firmy. Dotyczył znów 4Mobility… Inny z Czytelników, napisał nam taką wiadomość:

Otóż z nudów sprawdzam co systemy carsharingowe udostępniają w ramach requestów sieciowych. Np. Panek daje obiekt VEHICLES z listą samochodów tylko po uprzednim zalogowaniu, Traficar udostępnia JSONa przez zapytanie XHRowe. Natomiast 4mobility oprócz tego, że udostępnia dane o samochodzie (bardziej szczegółowe niż konkurenci), to w odpowiedzi zapytania możemy znaleźć dane takie jak: nr telefonu ostatniej osoby korzystającej z samochodu, datę urodzenia, płeć, adres email…

Czytelnik podesłał nam przykładowy adres z danymi do wglądu, który zwracał JSON-a. Ujawnione dane faktycznie obejmowały nazwiska, płeć, e-mail i numer telefonu.

Zgłosiliśmy sprawę do 4mobility. Przedstawiciel firmy podziękował za informację. Zapowiedział, że firma zweryfikuje swój system i wprowadzi zmiany, a więcej wyjaśnień przekaże nam po zakończeniu analizy. Na wyjaśnienia wciąż czekamy, ale przynajmniej błąd został już usunięty.

Wnioski?

Błędy się zdarzają. Jeśli otrzymacie opis jakiejś podatności w swojej webaplikacji, poza jego usunięciem zweryfikujcie inne fragmenty kodu (klasy, funkcje) które mogły być pisane przez ten sam zespół developerów i pracują na tych samych danych. One też mogą zawierać podobne, albo nawet takie same błędy i np. jak w przypadku 4Mobility, zwracać za dużo kodu.

PS. Jeśli chcielibyście dowiedzieć się jak namierzać błędy w swoich serwisach internetowych, to zapraszamy Was na nasze bestsellerowe szkolenie pt. Atakowanie i Ochrona Webaplikacji — najbliższy termin to 18-19 stycznia w Warszawie. Gwarantujemy 2 dni ostrego hackowania w specjalnie o tego celu przygotowanym środowisku labowym. Własnoręcznie zastosujecie szereg ciekawych technik ataku, samodzielnie znajdziecie błędy i zapoznacie się z dziesiątkami programów i aplikacji przydanych w testowaniu bezpieczeństwa serwisów internetowych. Zarejestrować na szkolenie możecie się tutaj.

Przeczytaj także:

22 komentarzy

Dodaj komentarz
  1. Wygląda na skopaną implementacje mvc skoro nie oddzielają oni logiki biznesowej od widoku.

    • Mnie bardziej interesuje po co im w ogóle ten endpoint.

  2. Aż strach pomyśleć jak długo ładowałaby się ta trona jakby mieli dużo klientów.

    • Już raczej (o ile się info się rozejdzie) strona nie powinna wiele zwolnić.

  3. Ah, a ciekawe czy 4mobility zna zapisy art. 33 i 34 RODO? x)

    • A RODO przypadkiem nie wchodzi dopiero w maju tego roku? A prawo (przynajmniej teoretycznie) nie działa wstecz.

    • Pewnie nie zna ale pozna! :)

    • Nawet nie trzeba czekać na RODO. Aktualne prawo w Polsce i tak może mocno dowalić.

  4. Sam fakt wysłania na zewnątrz poufnych danych jest naruszeniem. Nie ma tu znaczenia czy owe dane są standardowo wyświetlane przez przeglądarki czy trzeba użyć jakiś innych narzędzi. Dane opuściły prywatny serwer i przeszły przez sieć publiczną = wyciek.

    • Załóżmy, że klient banku dostaje korespondencję pocztą. Każda kartka jest zadrukowana z jednej strony wyciągiem z konta klienta a na drugich stronach są wydrukowane farbą widoczną w UV numery kart płatniczych wybranych losowo innych klientów. Czy nie doszło do naruszenia? Przecież czytanie wyciągu ze skanerem banknotów jest niestandardowe i “wykracza poza zwykły tok czynności”. :)

  5. Jakim trzeba być tumanem programistą aby wystawiać jsona ze wszystkimi klientami i tego nie ogarnąć?

    • Najwyraźniej ten cały json jest po prostu niekompetentny i należy go zwolnić.

    • Od razu zakladasz ze to tluman, moze to po prostu student hobbista albo swiezo upieczony programista, ktory byl wczesniej ‘srubokretem’? Fakt faktem wstyd za ‘lenistwo’ sam Bill Gates by takiego nie zatrudnil (taka mam nadzieje) ;)

    • Maslan, nie zakladaj ze winny jest zawsze programista, czesto gesto to proces, asapy, flow, pr, brak testow, jest wazniejsze niz produkt, stad czesto powstaja babole takiego typu. Nie mozna wykluczyc ze robil to jakis programista-hobbista dla ktorego liczy sie wynik a nie jakosc (bo ma placone za produkt), a moze faktycznie to bambaryla bez wiedzy i checi to poglebiania wiedzy… diagnoza co to za ‘tuman’ jest gdzies po srodku. A na koniec: jezeli pracujesz w firmie/korpo to winna nigdy nie jest po jednej stronie ;)

  6. Zgodnie z art. 26 ust. ustawy o ochronie danych osobowych …Administrator danych przetwarzający dane powinien dołożyć szczególnej staranności w celu ochrony interesów osób, których dane dotyczą… Można z dużym prawdopodobieństwem uznać, że opisywana sytuacja dowodzi braku szczególnej staranności w ochronę danych osobowych klientów firmy. Warto też przytoczyć art. 51 ust.1 tej samej ustawy 1. …Kto administrując zbiorem danych lub będąc obowiązany do ochrony danych osobowych udostępnia je lub umożliwia dostęp do nich osobom nieupoważnionym, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2… A w ust.2 jest mowa, że …Jeżeli sprawca działa nieumyślnie, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do roku. Można mieć wątpliwości, czy zachodzi w tej sprawie przesłanka nieumyślności.

    • I w takim wypadku wszyscy, których dane osobowe były prezentowane otrzymują status strony w postępowaniu karnym, a prokurator lub policja powiadamia o tym statusie.
      Na gruncie KC uprawnienie pokrzywdzonego przysługuje w ramach ochrony dóbr osobistych – prawa do prywatności, i tu nie ma obowiązku powiadamiania, chyba, że regulamin lub wewnętrzna polityka firmy to reguluje. Aleeee z tego co się orientuje to uprawnienie może być wzruszone, rok po powiadomieniu pokrzywdzonego. Tak, że RODO wejdzie 25 maja i w tego typu wyciekach będzie obowiązek powiadamiania pokrzywdzonych i przyszłego GIODO.

  7. BirthDate trzymane z godziną… :)

    • … ciekawe czy lokalną dla miejsca narodzin czy w UTC :)

  8. Starałem się wzbudzić jakąś polemikę na ich profilu FB, ale okazuje się, że jak nie wyciekł PESEL i nry kart kredytowych, to nic się nie stało. A sprawa dotyczyła niewielkiej ilości użytkowników :) Z screena widzę ,że array ma co najmniej 3062 pozycje. Nie wiem ile dalej.

  9. Czepiacie się 4mobility ale aplikacja http://www.fleetster.de jest zakupionym produktem zewnętrznym z przetłumaczonym interfejsem. Podejrzewam że nie mają dostępu do tej części kodu która jest odpowiedzialna za ten proceder dlatego nie są świadomi powagi sytuacji. Tak bym to tłumaczył.

    • Ale, że tak powiem:
      “A co mnie to obchodzi, że to wina produktu zewnętrznego?”
      s
      To właściciel portalu jest odpowiedzialny za ochronę danych osobowych i powinien używać takich narzędzi, które te dane będą chroniły.
      Jak będzie je zapisywał długopisem na papierze toaletowym w WC, to mam miec pretensję to producenta papieru toaletowego czy długopisu, ze moje dane wyciekły?

      Zmierzam do tego, że 4mobility powinno w takim razie albo żądać poprawki od dostawcy oprogramowania, albo zmienić soft.

  10. Mój kot właśnie wykazał się specjalistyczną wiedzą i włączył narzędzia deweloperskie w FF :) Jaka szkoda, że nie na stronie 4mobility… ;)

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: