Tym razem historyjka krótka i z życia wzięta: znalazłem usterkę w serwisie transakcyjnym mBanku. Nie szukałem jej aktywnie, natrafiłem na nią podczas przeszukiwania historii operacji. Pamiętałem, że w przelewie, który chciałem powtórzyć, występował uśmieszek z dwukropka, minusa i nawiasu, więc taki ciąg znaków wpisałem w pole wyszukiwania operacji. Po sekundzie od wpisania ostatniego znaku startowało automatyczne podpowiadanie, z którego byłem natychmiast wyrzucany na następującą stronę:
Komunikat błędu sugeruje usterkę klasy input validation, najwyraźniej wpisywany przeze mnie tekst był interpretowany przez mechanizm wyszukiwania jako część wyrażenia regularnego, tymczasem powinien być traktowany literalnie jako tekst wzorcowy. Nie próbowałem eksplorować błędu, bo ewentualna blokada podstawowego konta bankowego byłaby dla mnie problematyczna. Zamiast tego napisałem do zespołu bezpieczeństwa instrukcję odtworzenia błędu:
1. Wykonać przelew, w treści którego będzie na końcu klasyczny smiley z dwukropka, minusa, nawiasu. np „cośtam :-)”
2. Odczekać aż przelew trafi do historii
3. Przejść do menu płatności → historia
4. W polu wyszukiwania wpisać „:-)”, bez cudzysłowów
5. Poczekać 2 sekundy na autouzupełnianie
6. Efekt jak na obrazku, przekierowanie do niekompletnej strony z komunikatem
unmatched ) in regular expression
7. Wrócić do płatności → historia, zawartość filtra jest zachowana, tym razem filtrowanie działa, widać operację z uśmieszkiem w tytule
8. Dać focus na pole filtra, dodać spację
9. Efekt z pkt 6 zostaje ponowiony
Nie wiem, czy usterka da się jakoś wyexploitować, ale nie chcę grzebać. Coś się na pewno źle escapuje. Błąd nie występuje w wyszukiwarce w aplikacji Android.
Potwierdzenie przyjęcia zgłoszenia dostałem w ciągu dwóch godzin.
Niniejszą blogonotkę publikuję po potwierdzeniu, że problem został usunięty. Wdrożenie poprawki trwało około tygodnia od zgłoszenia, co jest wynikiem bardzo dobrym nie tylko w branży finansowej.
PS: z usług mBanku korzystam prawie 20 lat czyli od samego początku działalności. Jeśli akurat planujesz założenie tam konta, możesz rozważyć użycie kodu polecającego informatykzakladowy (albo kliknięcie tego linku). Wszystkie przychody z bloga będę publikował systematycznie na jego łamach, blogonotka z wynikiem finansowym i kompletem statystyk czeka w kolejce do publikacji.
PPS: subskrybenci newslettera poznali te statystyki oraz przychody i wydatki już w niedzielę, bo tego typu materiały dostają wcześniej. Do newslettera możesz zapisać się poniżej.
PPPS: the plural of regex is regrets 🙃
O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.
3 odpowiedzi na “Usterka w serwisie transakcyjnym mBanku – zgłoszona i naprawiona”
Z aplikacji mBank pamiętam taką historię.
Finanse->Karty->eKarta->Zmień środki
Powiedzmy że jest 2,00
Ustawiam kursor za 2, kasuję, mam ,00
Ustawiam kursor za drugim 0 i kasuję, mam ,0
Kasuję pozostałe 0 i aplikacja się wywraca.
Jak dzwoniłem do mBank to polecili mi przeinstalować aplikację…
Może i mieli rację, nie chciało mi się sprawdzać.
W aplikacji twisto takich błędów jest mnóstwo i mają one charakter uniemożliwaijący funkcjonowanie płatności. Wszystko zgłaszełem po kilka razy ale konwersacja przypomina rozmowę głuchego ze ślepym. Czy mógłbyś to zgłosić do nich jako informatyk zakładowy? Może w końcu zareagują na zgłoszenie od kogoś renomowanego.
Proszę o przysłanie informacji o błędach, może będzie to ciekawy temat.