Bezpieczeństwo PKO BP

PKO Inteligo jest internetową gałęzią największego banku w Polsce - PKO BP. Można by się spodziewać, że tak wielka instytucja w odpowiednim stopniu zadba o bezpieczeństwo swoich klientów...

Trzeba przyznać, iż bezpieczeństwo serwisu jest wyższe niż w przypadku wielu innych polskich banków. Niestety obie strony (www.pkobp.pl i www.pkointeligo.pl) były pisane bez globalnego myślenia. Innymi słowy wygląda to tak, że jedna osoba dodała jakąś funkcjonalność do serwisu, a następnie ją poprawnie zabezpieczyła. Po jakimś czasie drugi programista wykorzystał ją w innej części strony. Jednak nie zadbał odpowiednio o sprawy bezpieczeństwa. W efekcie udało mi się wykryć trzy luki, z czego dwie pozwalają na JavaScript Injection oraz XSS, jedna tylko na zmianę treści strony.

Razem z Panem Mateuszem Stępniem z HACK.pl przystąpiłem do sprawdzenia dokładnie wykrytych luk i oceny potencjalnego niebezpieczeństwa grożącego użytkownikom portali. Udało nam się ustalić następujące sprawy: błąd w pkobp.pl może zostać wykorzystany do phishingu. Nie pozwala jednak na zdobycie żadnych przydatnych danych, chyba że atakujący jest w stanie nakłonić internautę do użycia guzika "logowanie" w celu zalogowania się do części wewnętrznej. Co do błędu w samym Inteligo, tutaj sprawa wygląda poważniej. Błąd znajduje się w dwóch najważniejszych skryptach: short_ssk - odpowiedzialnego za składanie wniosków kredytowych oraz ikd, który właśnie zajmuje się obsługą całej bankowości internetowej, wykonywania przelewów, sprawdzania stanu konta, dokonywania ustawień. Ponieważ Inteligo, nie używa ciasteczek, można sobie wyobrazić trzy scenariusze ataku:

1) Użytkownicy Inteligo (z powodu braku ciasteczek) są przyzwyczajeni do komunikatów o wylogowaniu (sam byłem świadkiem, jak mój kolega logował się kilka razy). Wystarczy zwykłe odświeżenie strony, czy naciśnięcie guzika Wstecz, a trzeba się logować ponownie. Jeśli więc użytkownik po kliknięciu na odpowiednio spreparowany link zostałby wylogowany, oczywistym jest założenie, iż mógłby się zalogować ponownie.

2) Użytkownik zapamiętał hasło i login w przeglądarce. Jeśli więc po kliknięciu na link, czy nawet tylko serfując po necie doprowadzi on do otwarcia strony Inteligo, przeglądarka wypełni pola odpowiednimi wartościami i po upływie np. 0.5 sekundy wszystkie dane zostaną wysłane do atakującego przez lukę RCSR.

3) Ten scenariusz jest chyba najgorszy, gdyż daje 100% kontroli nad kontem. Jeśli użytkownik na "podejrzanej" stronie spróbuje dokonać jakiejkolwiek płatności przez Inteligo, zostanie standardowo przeniesiony na stronę https://www.pkointeligo.pl i poproszony o zalogowanie, a następnie dokonanie odpowiedniego przelewu. W tym przypadku użytkownik nie ma żadnej możliwości sprawdzenia, czy ewentualna transakcja jest bezpieczna, co może się zakończyć utratą wszystkich pieniędzy z konta. W zamieszczonych zrzutach ekranu ukazujących zagrożenie umieściliśmy jeden, gdzie strona Inteligo została podmieniona przez stronę Hack.pl. Jak można zauważyć jest to do wykrycia, gdyż przeglądarka ostrzega nas o tym ( w Mozilla Firefox jest to sygnalizowane przekreśloną ikoną kłódki w polu adresowym). Jednak jest możliwa pełna podmiana strony nie do wykrycia przez użytkownika. Dowodem na to jest chociażby zrzut, na którym znajduje się zamieszczone przez nas ostrzeżenie o kłopotach Inteligo z bezpieczeństwem. Ta technika jest trudniejsza i wymaga od atakującego lepszego przygotowania. Użyliśmy prostszej i możliwej do wykrycia metody, gdyż naszym celem była jedynie ilustracja problemu, a nie jego realne wykorzystanie. W przypadku dwóch zrzutów ukazujących wykorzystanie luki XSS do kodu strony została dopisana również zmienna document.location. Udowadnia to w kontekście, której witryny skrypt został uruchomiony. Do czasu załatania opisanych przez nas luk ostrzegamy przed klikaniem na jakiekolwiek linki wskazujące na strony pkointeligo.pl oraz pkob.pl oraz wykonywaniem transakcji elektronicznych za pomocą Inteligo.

Michał Majchrowicz i Mateusz Stępień - HACK.pl