15 lipca
2009
napisany przez Wiktor Jarka

Podczas dokonywania płatności z konta w PKO BP spotkała mnie dzisiaj mała niespodzianka. Nie, nie przelogowało mnie na konto jakiegoś milionera (a szkoda). Odkryłem jednak pewną wadę zabezpieczeń. Nie posiadam wystarczającej wiedzy żeby ją wykorzystać, ani czasu aby tę wiedzę zgłębić. Jednak, czy nie znalazłby się ktoś z tą wiedzą? Z drugiej strony – czy odkryłem coś tak nietypowego czego nie sprawdziłby wytrawny haker?

Otóż będąc zalogowanym do systemu bankowości elektronicznej PKO BP, straciłem połączenie z Internetem. Po odzyskaniu połączenia mogłem bez skrępowania kontynuować pracę w systemie. Problem w tym, że moje łącze to neostrada, więc zmieniło się moje IP. Pierwotnie utrata połączenia nastąpiła podczas przesyłania jakiegoś formularza, więc podejrzewałem, że mógł on zawierać dane niezbędne do autoryzacji. Rozłączyłem się, połączyłem i wykonałem parę klików w menu. Nadal zalogowany (po dwukrotnej zmianie adresu IP). Jedynym sposobem na nie bycie zalogowanym jest wylogowanie się (może jest jeszcze coś takiego jak przeterminowanie sesji, ale nie sprawdzałem).

“It’s not bug. It is a feature.”? Jeśli byłaby to prawda to trochę to niepokojące, bo nie wydaje mi się żeby klientów banku tak często rozłączało, aby to poprawiło widocznie komfort ich pracy. Nawet jeśli to ten komfort powinien poprawić dostawca Internetu, a nie bank, kosztem bezpieczeństwa. Wyobraźmy sobie sytuację, że dokonujesz jakiś transakcji w Internecie i nagle tracisz połączenie. Nie wylogowałeś się wprost z banku, więc przez jakiś czas dla bankowego systemu pozostajesz zalogowany – niezależnie od Twojego adresu IP. Czy nie stwarza to pola do popisu dla hakerów, którzy mogliby wtedy przejąć kontrolę nad Twoim kontem? Czy nie mogą zrobić tego nawet wtedy, gdy nie tracisz połączenia z Internetem? W końcu w BZWBK wystarczy wywołać nową funkcję zanim zostanie zakończone wykonywanie poprzedniej i już skutkuje to wylogowaniem. Zmiana IP również. Czemu w PKO BP jest inaczej?

Brak podobnych wpisów

    Wypełnij formularz i otrzymuj darmowy biuletyn!

    Zgadzam się z Polityką Prywatności

    9 komentarzy

    1. 15/07/2009

      Sesja jest oparta o coockie. Czyli bezpieczeństwo twojego konta jest odwrotnie proporcjonalne do odległości w jakiej znajduje się ciasteczkowy potwór od twojego kompa.
      Na serio to zmień bank, bo PKO o tym wie, ale jakoś nie ma zamiaru tego naprawić.
      Względnie (i tu zależy wszystko od systemu i przeglądarki) ustaw w konfiguracji czyszczenie ciastek po zerwaniu połączenia. W FF są nawet pluginy, które to zrobią dla wybranych witryn.

    2. Wiktor Jarka
      15/07/2009

      Spodziewałem się tego, że w cookies są przechowywane informacje o sesji. To dość popularne rozwiązanie. Dziwi mnie jednak fakt, że sesja nie zawiera informacji o tym z jakiego adresu nastąpiło jej utworzenie. I tym bardziej brak reakcji na zmianę adresu.

      Owszem, można naiwnie zakładać, że skoro mój komputer jest odcięty od Internetu to kto się dostanie do moich cookies, ale… to BARDZO naiwne. Z resztą, to jest bank. Czy zabezpieczenia w bankach nie powinny być opracowywane przez ludzi, którym tego tłumaczyć nie trzeba?

      Dzięki za wpis ;).

    3. 15/07/2009

      Rzeczywiście brak reakcji na zmianę adresu IP jest dziwny, ale oznacza to, że system bezpieczeństwa jest oparty o manualne ustawianie i pobieranie cookies.
      Weź firebuga i przyjrzyj się czy w ciasteczkach nie są zapisywane inne dane np. login. Jeżeli tak to jak najszybciej zmień bank.

    4. Wiktor Jarka
      15/07/2009

      Hm. Albo coś mi nie działa albo … nie ma żadnych cookies? :D

      http://wiktor.jarka.pl/upload/pko-brak-cookies.jpg

    5. 15/07/2009

      o0 no to zgłupiałem… Nie mam też możliwości weryfikacji, bo nie mam u nich konta. Jednak jeszcze ekstra pytanie czy oni nie rozdają swoim klientom certyfikatów?

    6. Wiktor Jarka
      15/07/2009

      Wygląda na to, że rozdają. Czyżbyś w takim razie rozwiązał zagadkę? :)

    7. 15/07/2009

      Tak :)

      W tradycyjnym systemie gdy wykonywane jest połączenie SSL (zamiast http masz https) tylko serwer przedstawia się za pomocą certyfikatu. Przeglądarka dokonuje weryfikacji i pozwala na połączenie lub stwierdza, że dany certyfikat jest nieważny i prosi użytkownika o ręczne zatwierdzenie certyfikatu.
      Istnieje jednak możliwość nawiązania połączenia z wykorzystaniem dwustronnej weryfikacji. Z takim przypadkiem mamy zapewne do czynienia tutaj. Działa to tak, że podobnie jak w jednokierunkowym ssl serwer przedstawia się certyfikatem po czym żąda identycznego przedstawienia się przez użytkownika. Przeglądarka o ile ma zainstalowany certyfikat to wysyła go do serwera. Serwer weryfikuje go (proces uwierzytelniania) i jeżeli nie jest ważny to odrzuca połączenie, bo nie ma możliwości ręcznej weryfikacji certyfikatu. Jeżeli jednak certyfikat jest prawidłowy to użytkownik zostaje przepuszczony na serwer, gdzie następuje autoryzacja.
      W tym przypadku sesja jest łączona na serwerze z uwierzytelnionym certyfikatem, a dane autoryzacyjne siedzą w sesji. W momencie ponowienia połączenia (zmiana IP) sprawdzany jest certyfikat i jeżeli serwer stwierdzi, że istnieje sesja dla danego certyfikatu to jest ona przywracana niezależnie od IP. Oczywiście przywracany jest pełen stan sesji czyli m.n. autoryzacja.

      ps. siedzę nad czymś podobnym teraz.

    8. Wiktor Jarka
      15/07/2009

      To jeśli siedzisz nad czymś podobnym to rozumiem, że w Twojej opinii takie rozwiązanie jednak jest bezpieczne?

    9. 15/07/2009

      Bezpieczne jak każde zabezpieczenie. Czyli do momentu, aż ktoś nie uzyska dostępu do komputera. Względnie aż komuś nie zdradzisz hasła i nie pobierze on certyfikatu. Generalnie nie ma rozwiązań całkowicie bezpiecznych, ale to uznawane jest za jedno z lepszych. Niestety tak jak pisałem zazwyczaj zabezpieczenia są tak mocne jak najsłabszy element, czyli tradycyjnie człowiek.

    Zostaw komentarz