15:30
29/3/2017

Wystarczyło zmienić liczbę w linku na kolejną, aby pobrać cudzą polisę ubezpieczeniową z systemu banku Millennium. Nasz Czytelnik próbował zgłaszać problem na infolinię, ale tam dowiedział się, że… to wcale nie był błąd, a w ogóle, to nie należy zmieniać cyfr w linku. Na szczęście, po naszym zgłoszeniu błąd został błyskawicznie usunięty.

Opis błędu w systemie Millenet

Czytelnik doniósł nam, że w systemie Millenet (Bank Millennium) można pobrać polisę ubezpieczeniową OC innej osoby. W tej polisie są takie dane jak:

  • imie,
  • nazwisko,
  • PESEL,
  • adresy,
  • informacje o samochodzie, w tym nr VIN i rejestracja

Po zalogowaniu się do sytemu banku, link do polisy ma postać:

https://www.bankmillennium.pl/osobiste2/Insurances/InsuranceDetails/GetDocument?policyNumber=46000000xxxx

Jak łatwo się domyślić, wystarczyło podmienić wartość parametru policyNumber na inną liczbę i pobierał się plik. Na dowód, czytelnik podesłał nam jedną z polis:

Jak pisze nasz czytelnik:

Bankowi dałem znać na infolinii ale w odpowiedzi na zgłoszenie usłyszałem coś tego typu: “A dlaczego pan zmieniał ten numer w linku, tak nie można robić”. Pani z infolinii powiedziała, że zgłosi to dalej ale nie ma możliwości żebym został poinformowany kiedy i czy w ogóle moje dane nie będą dostępne do pobrania przez obcą osobę. Sugerowała, że to nie jest żaden błąd, tylko nie powinienem zmieniać tego numeru w linku…

Tzw. enumeracja parametru, to jeden z podstawowych błędów, który często spotyka się w systemach przyjmujących pliki od użytkowników lub generujących np. faktury “z szablonu”. Błąd tego typu bardzo łatwo jest “znaleźć” i wykorzystać — generalnie jeśli w linku znajduje się jakaś wartość liczbowa, aż się prosi aby zwiększyć ją o jeden i zobaczyć, co się stanie. “Atak” nie wymaga żadnych specjalnych narzędzi, jedynie umiejętności zwiększania liczby o 1. Tym bardziej dziwi zakaz konsultantki, który, jak wiadomo, jest nie do wyegzekwowania.

Sprawna reakcja Millennium

Chcąc pomóc czytelnikowi w jego zgłoszeniu, sami postanowiliśmy zwrócić się w sprawie tego błędu do banku Millennium. Szybko otrzymaliśmy obietnicę zajęcia się błędem. A dzień później odpowiedź potwierdzającą występowanie problemu oraz jego usunięcie.

Panie Redaktorze,
Dziękujemy za zgłoszenie do biura prasowego dotyczące Bankowości Internetowej Millenet. Przekazaliśmy je niezwłocznie odpowiednim zespołom w Banku. Nieprawidłowo działająca funkcjonalność została natychmiast zablokowana, a zespół programistów opracował nową wersję, która zostanie uaktywniona w dniu dzisiejszym. Podjęliśmy kroki mające na celu identyfikację klientów dotkniętych zgłoszonym incydentem.

Prosimy bardzo o przekazanie bezpośredniego kontaktu do osoby zgłaszającej w celu wyjaśnienia sytuacji.

Odpowiedzi na pytania:
1. Funkcjonalność została zablokowana, przeanalizowaliśmy zgłoszenie i wprowadziliśmy zmianę w kodzie, która będzie uaktywniona w dniu dzisiejszym.
2. Zidentyfikowaliśmy nieprawidłowość w logice kodu.
3. Klienci mogą przekazywać zgłoszenia każdym kanałem kontaktu z Bankiem, który jest dla nich wygodny; jednakże takie specyficzne zgłoszenia najlepiej przekazywać poprzez formularz zgłoszeniowy w Millenecie.

Nasze pytania, jak możecie się domyślić po odpowiedzi z banku, dotyczyły usunięcia błędu i jego przyczyn technicznych. Pytanie trzecie dotyczyło tego, w jaki sposób klienci powinni zgłaszać błędy aby było to skuteczne. Co ciekawe, kilka dni później dostaliśmy od banku jeszcze jedno oświadczenie:

Chcielibyśmy jeszcze raz podziękować za zgłoszenie i przekazać jednocześnie kilka informacji dotyczących rozwiązania sprawy.

Jak już wspomnieliśmy, po otrzymaniu zgłoszenia nieprawidłowo działająca funkcjonalność szybko została zablokowana. W kolejnym kroku przeanalizowaliśmy logowania do usługi od dnia jej udostępnienia, co pozwoliło zidentyfikować liczbę i dane osób dotkniętych zgłoszonym incydentem. Ustaliliśmy, że zostały wyświetlone polisy jedynie dwóch osób.

Niezwłocznie skontaktowaliśmy się ze wskazanymi klientami w celu poinformowania ich o zaistniałej sytuacji oraz szczegółowo wyjaśniliśmy, jakie dane zostały ujawnione i jakie kroki zostały podjęte, by wyeliminować nieprawidłowość.

Skontaktowaliśmy się również z osobą zgłaszającą problem, by podziękować za wskazanie nieprawidłowości.

Jak widać na przykładzie powyższego, jeśli już opis błędu trafi do odpowiednich osób, to sprawie nadawany jest właściwy priorytet i obsługa incydentu działa jak w szwajcarskim zegarku. Dział bezpieczeństwa w Millennium działa sprawnie — zresztą jego profesjonalne reakcje mieliśmy okazję obserwować nie tylko w przypadku tego błędu, ale również podczas badania bezpieczeństwa aplikacji mobilnych polskich banków. Przypomnijmy, że tylko pracownicy Millennium podziękowali autorowi badania za zgłoszone błędy.

Podobny problem na Uniwersytecie Gdańskim

Z podobnymi problemami enumeracji liczb w parametrach linków spotykaliśmy się częściej, choć niekoniecznie w przypadku banków. Jeszcze w ubiegłym roku pewien Czytelnik zgłosił nam, że systemy Uniwersytetu Gdańskiego “są jak ser szwajcarski, nie łączą sesji z jakimikolwiek pobieranymi danymi“. Następnie Czytelnik pokazał nam jeden z tych błędów.

Każda osoba mogła założyć konto w IRK UG, czyli w systemie do rekrutacji. Jeśli ktoś już się zalogował to mógł manipulować linkami aby uzyskać dostęp np. do nieswoich oświadczeń wygenerowanych przez system. Link do oświadczeń miał postać

https://irk.ug.edu.pl/kandKier.web?generujOswiadczenie=true&idOsobaKier=XXXXX, gdzie XXXXX

gdzie XXXXX to cyfry. Na niektórych identyfikatorach można było trafić na oświadczenia zawierające m.in. imię, nazwisko i PESEL.

Dodajmy, że PESEL był domyślnym hasłem do logowania np na stronie https://ps.ug.edu.pl/login.web gdzie można zobaczyć wszystkie możliwe dane i przebieg studiów. To swoją drogą też nie był najlepszy pomysł…

Rzecznik prasowy UG dr Beata Czechowska-Derkacz powiedziała Niebezpiecznikowi, że problem został usunięty. Dodała, że Uniwersytet nie miał wcześniej “żadnej informacji na temat tej podatności“. Tymczasem nasz Czytelnik twierdził, że zgłaszał różne błędy wielokrotnie i później zgłosił się do nas bo “nie miał już siły“.

Kardynalny błąd – ignorowanie zgłoszeń

Obserwując liczne problemy tego typu dochodzimy do wniosku, że wiele instytucji popełnia kardynalny błąd ignorowania zgłoszeń błędów bezpieczeństwa. Ślady tego błędu znajdujemy nawet w dokumentach sądowych.

24 listopada 2015 roku Sąd Rejonowy w Łodzi wydał wyrok w sprawie mężczyzny, którego dziwnie “wyrzucało z konta“. Klient zgłaszał problemy pracownikom banku a oni to zignorowali. Okazało się, że miał miejsce atak na konto i wypłynęły z niego pieniądze. Sąd przyznał rację klientowi (sygn. akt I C 1206/14).

Reakcja różnych instytucji zwykle jest szybka jeśli błąd (nawet ten sam, co już znany, ale zignorowany) zgłasza w imieniu czytelnika nasza redakcja. Musimy przyznać, że firmy i instytucje dość szybko reagują na nasze ostatnie zgłoszenia dotyczące wycieków danych osobowy, jak np. błędy w systemie PEKA. Czy firmy te zadziałałby równie szybko, gdyby błąd został zgłoszony przez “zwykłego” internautę? Miejmy nadzieję, że tak.

Przeczytaj także:

30 komentarzy

Dodaj komentarz
  1. Miał błąd! Powinni aresztować wszystkich tych którzy ten błąd wykorzystali do własnych celów. Zgadza się ludzie? A może jednak to bank powinien za to odpowiadać? Że też istnieją jacyś ludzie chcący pomóc! Nie pomagać i walczyć o swoje!

  2. Niech jeszcze ich apka przestanie codziennie wyświetlać reklamy OC na pasku powiadomień ;)

    • Na szczęście do bankowości elektronicznej nie mam Millenium, tylko Mycelium :D

  3. Nieznaczny błąd w formatowaniu, przegrepujcie po “gdzie XXXXX”

  4. Na Politechnice Warszawskiej do logowania na stronę zapisów do studium języków obcych należy podać wydział, nazwisko i nr indeksu. Ktoś przebije?

    • Owszem, logowanie do systemu wyboru tematu pracy dyplomowej na Politechnice Krakowskiej odbywa się poprzez podanie tylko imienia, nazwiska oraz numeru indeksu.

    • Szkoda, że avd nie zaznaczył, że po zalogowaniu do “systemu wyboru tematu” student może wyłącznie przeczytać listę tematów i nic więcej.

  5. “Czy firmy te zadziałałby równie szybko, gdyby błąd został zgłoszony przez “zwykłego” internautę?”
    Oczywiscie ze nie. Taka smutna zyciowa prawda.

  6. Millenium bardzo dba o klientów i robi wszystko żeby byli zadowoleni. Bardzo dobrze wspominam każda wizytę w placówce czy też kontakt z infolinia. Inne banki powinny się uczyć!

    • Potwierdzam, widocznie więcej szkoleń z obsługi klienta mają, bo w kilku oddziałach byłem. W innych bankach sporo zależy od oddziału. I do tego chyba jedyny bank w którym rozwiązanie umowy jest zupełnie bezproblemowe (jedyny powód: 3zł/mc, a nie chciałem zmieniać konta na inne, darmowe, bo za rok jako nowy klient dostanę jakieś bonusy).

    • Dba o klientów? Wolne zarty, szkoda, że nie wiecie jak pięknie się odnoszą do klietów posiadajacych u nich kredyty “frankowe”. Swego czasu niektóre oddziały odmawiały przyjęcia pisma reklamacyjnego. Klienci musieli wysyłać poczta za potwierdzeniem odbioru…
      Ot taka wyższa kultura bankowości.

  7. Nie chcę nikomu umniejszać, ale według mnie to nie dział bezpieczeństwa tak szybko zareagował.
    Poza tym to nie pierwszy taki błąd, i nie mówię o wspomnianej aplikacji mobilnej. Było tam kilku kumatych ludzi, którzy ogarniali takie tematy, ale już tam nie pracują.

    • Znaczy kto?

  8. Co do szybkości reakcji na błąd, dużo pewnie tez zależy od tego jak się opisze błąd. Niestety niektórych rzeczy ludzie nie potrafią opisać i albo instytucja to ignoruje albo się przeciąga sprawa, bo trzeba się “domyślać”

  9. – “A dlaczego pan zmieniał ten numer w linku”

    – “Przeklejając adres zgubiłem znak” lub “przepisując adres zrobiłem literówkę” :D

    • Ale jak się Panu udało przepisać ten link 9mln razy w ciągu minuty?

    • Michał, sprawiłeś, że uśmiecham się od rana. Dzięki :)

  10. Cześć! Korzystam z usług pewnej firmy i mają podobny problem. Wystarczy, że przestawię jedną liczbę i mam dostęp do 30K dokumentów sprzedażowych. Zgłosić im to? Nie pójdę siedzieć? ;)

    • Hakerman!

  11. Ja z kolei znalazłem błąd w pewnym sklepie internetowym – sam sobie mogę wpisać cenę towaru. Dodawanie do koszyka jest realizowane przez funkcję JS gdzie jednym z argumentów jest cena a, że w przeglądarce jest konsola JS… Sprawdzę jeszcze kilka rzeczy i im to zgłoszę.

    • Spotkałem się z podobną praktyką właśnie w przypadku sklepów internetowych, żeby nie przechowywać danych klientów i ominąć zgłaszanie ich do GIODO itp. stosują skrypty JS po stronie klienta jako obsługa koszyka. Działa to tak, że formularze zamówienia, koszyk itd. w ogóle nie są przetwarzane przez system sklepu. Zatwierdzenie zamówienia i dokonanie płatności powoduje wysłanie danych bezpośrednio na webservice obsługujący transakcję typu PAYU.

      Tłumaczenie jest takie, że po co mam się przejmować ochroną danych osobowych skoro serwis pośredniczący w płatności i tak już to robi. Oni tylko widzą płatności, osobę, adres i szczegóły zamówienia w opisie transakcji w panelu PAYU czy DotPay’u. To im wystarcza.

      Dlatego cena jest przesyłana jako element JS’a. Ogromna podatność na nadużycia.

    • @zzz, faktycznie coś w tym jest. A za nadużycia płaci właściciel sklepu. Ujmować sobie po kilkadziesiąt groszy przez kilka lat to niezłą sumkę się zaoszczędzi. Wątpię też, że właściciel sklepu zgodził by się na to będąc świadomym zagrożeń.

      Ale w tym wypadku jest to błąd bo posiadają bazę klientów. A i podatność jak w artykule posiadają. Każdy może podejrzeć historię zamówień każdego zmieniając id zamówienia w adresie. A tam pełne dane klientów.

  12. Ciekawe że duże korporacje wystawiają na linię frontu talki z klientem zawsze jakiś zarozumiały, pewnych siebie pustaków. Na każdej znanej mi infolinii język techniczny nie przejdzie nigdy do działu IT z powodu pustactwa konsultanta. Zgłaszałem wielokrotnie różne problemy i zawsze odbijam się jak piłka od muru. Działa tylko straszenie GIODO i prokuraturą, ale wtedy zamiast łączyć do IT łączą do pustaka wyższego poziomu który tym się różni że to on straszy.

    Wystarczyło by podać oficjalnego maila do IT z nietrywialną zagadką matematyczną aby go wysłać. Ba, wystarczyło by cokolwiek nietypowego aby ten kanał zadziałał bez spamu.

    • Wysyłasz emaila na imie.nazwisko@domenafirmy.pl gdzie imie.nazwisko to dane członka zarządu wzięte ze strony firmy. zawsze działa ;)

    • Już wysyłałem na imie.nazwisko kilka razy. Raz trafiłem, przy czym odpowiedź przyszła wcale nie od miszcza tylko do sekretarki i zaczynała się od “skąd ma Pan ten adres” itp bzdury ze straszeniem wściekłymi prawnikami na łańcuchu. Firmy najpierw budują mury z pustaków a potem dziwią się ze o niczym nie wiedzieli.

      Jedynym skutecznym obecnie kanałem komunikacji są media, ale to działa na zasadzie że mleko się wylało, przyschło i śmierdzi.

      Postuluje wprowadzenie AntiHumCaptcha. Z pytaniami których przeciętny tumanista nie przejdzie. I mailem wprost do działu programistów. Ale kto by mnie tam słuchał :/

  13. “jeśli w linku znajduje się jakaś wartość liczbowa, aż się prosi aby zwiększyć ją o jeden i zobaczyć, co się stanie” – nikt po nas jeszcze nie złożył wniosku: w większości systemów więcej jest zabezpieczeń i sprawdzania, czy dane istnieją niż weryfikacji uprawnień odczytu, więc nie dowiemy się czy jest podatność. Zatem zmniejszam licznik ;)

  14. 660 zł za pastucha 1.9 tdi? Nawet nieźle (po ostatnich podwyżkach)

  15. Grammar Nazi to the rescue!

    “Po zalogowaniu się do sytemu banku, link do polisy ma postać”

    Z tego zdania wynika, że link loguje się do systemu banku.
    https://pl.wikipedia.org/wiki/Imies%C5%82%C3%B3w_przys%C5%82%C3%B3wkowy_wsp%C3%B3%C5%82czesny

  16. Piekna dziura pozwalajaca “czlowiekowi z ulicy” na deanonimizacje wlasciciela samochodu.
    Na podstawie numeru rejestracyjnego otrzymujemy z UFG numer policy OC. Na podstawie numeru polisy otrzymujemy szczegolowe informacje podane w artykule..

  17. Funkcjonalność pana odpowiadającego z Milenium oceniam na 0. Użyteczność również.

Twój komentarz

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