Stracił pieniądze, bo na smartfonie wyskoczył mu cudzy BLIK do potwierdzenia
Napisał do nas Łukasz, który stał się ofiarą ciekawego incydentu, o jakim Zenon Martyniuk powiedziałby… Wszystko zaczęło się przy kasie w supermarkecie Dino. Łukasz chciał za zakupy zapłacić kodem BLIK. Wpisał więc kod i otrzymał prośbę o potwierdzenie płatności w aplikacji mobilnej banku PKO BP. Łukasz płacił tak w Dino już wiele razy, więc odruchowo […]

Napisał do nas Łukasz, który stał się ofiarą ciekawego incydentu, o jakim Zenon Martyniuk powiedziałby…
Wszystko zaczęło się przy kasie w supermarkecie Dino. Łukasz chciał za zakupy zapłacić kodem BLIK. Wpisał więc kod i otrzymał prośbę o potwierdzenie płatności w aplikacji mobilnej banku PKO BP. Łukasz płacił tak w Dino już wiele razy, więc odruchowo potwierdził transakcję. I to był błąd. Bo jak się po chwili okazało opłacił, ale nie swoje zakupy w Dino, a czyjś obiad na Pyszne.pl na kwotę 51,79 PLN.
Ale… jak to możliwe, że Łukaszowi, który nigdy nie korzystał z Pyszne.pl aplikacja bankowa wyświetliła wyświetlił do potwierdzenia cudzą transakcję? Spróbujmy to wyjaśnić.
Nie mamy pana płaszcza i co nam pan zrobi?
Zanim Łukasz podjął próbę kontaktu z nami, złożył reklamacje wszędzie gdzie się dało. Ale nic z tego nie wynikło.
Bank PKO odrzucił reklamację, bo transakcja została poprawnie potwierdzona. Pyszne.pl odmówiło udzielenia informacji i poradziło zgłosić sprawę na policję, a BLIK odpowiedział tak:
BLIK nie przechowuje danych użytkowników i ich numerów kont, dlatego w sprawach związanych z przebiegiem transakcji prosimy o złożenie pisemnego zapytania do banku – wydawcy aplikacji mobilnej, z której została wykonana transakcja BLIKIEM.
Co tu się mogło zdarzyć?
Do głowy przychodzą nam następujące wyjaśnienia tego co spotkało Łukasza:
Hipoteza #1. Łukasz robił w przeszłości transakcje BLIK-iem z komputera i w przeglądarce “zapamiętał” zakupy blikiem na Pyszne.pl. Kiedy był przy kasie w Dino, ktoś inny, mający dostęp do przeglądarki skojarzonej z BLIK-iem Łukasza, kupił jedzenie na Pyszne.pl płacąc BLIK-iem. To spowodowało wysłanie prośby o potwierdzenie transakcji do Łukasza.
Hipoteza solidna, ale Łukasz nigdy z Pyszne.pl nie korzystał. Mimo to, sprawdził na naszą prośbę “skojarzone” ze swoim BLIK-iem przeglądarki i odpisał tak:
nie mam żadnych zapisanych sklepów ani wpisów w zakładce “zakupy bez kodu BLIK”.
No to pora na hipotezę #2. Kiedy Łukasz chciał zapłacić za zakupy BLIK-iem, po otwarciu aplikacji zobaczył kod, powiedzmy że taki: 021 370. W tym samym momencie, na drugim końcu Polski, jakiś głodny Bożydar też chciał zapłacić BLIK-iem, ale za jedzenie w serwisie Pyszne.pl. Pokażmy co się działo, sekunda po sekundzie:
-
T=0. Bożydar otwiera swoją aplikację i widzi tam kod: 021 379. Ale kiedy go wpisuje na stronie Pyszne.pl, popełnia błąd. Zamiast 9 wprowadza 0.
T+1. Łukasz wpisuje swój kod przy kasie w Dino.
T+2. Łukasz dostaje prośbę o potwierdzenie transakcji — czego się spodziewa. Problem w tym, że jego kod, przypadkiem, na skutek pomyłki, został 2 sekundy wcześniej użyty przez Bożydara, wiec smartfon Łukaszowi pokazuje prośbę o autoryzację, ale transakcji zainicjowanej przez Pyszne.pl, a nie Dino.
Ta hipoteza zakłada bardzo małoprawdopodobną, ale mimo wszystko możliwą sytuację. Dwie osoby w tym samym czasie chcą zainicjować transakcję podobnym kodem, przy czym jedna z nich ma grubego palucha, więc swój kod wprowadza z bardzo specyficznym błędem, w rezultacie używając kodu kogoś innego.
Możemy też rozważyć hipotezę #3, czyli coś, co nigdy nie powinno mieć miejsca, ale się zdarza, bo komputery to podłe maszyny a programiści to… wiadomo co. W każdym razie źródłem tej hipotezy jest błąd. W trakcie dokonywania transakcji przez Łukasza, w systemach BLIK-a (lub PKO BP) następuje jakiś race-condition albo przeskok bitu na skutek promieniowania kosmicznego, co powoduje, że dwie różne osoby widzą w swoich aplikacjach ten sam kod. Alternatywnie — i to hipoteza #3.1 — system PKO BP źle rutuje prośbę o potwierdzenie transakcji wykonywanej przez Bożydara i zamiast do Bożydara wysyła ją do Łukasza, który też powinien dostać potwierdzenie, ale związane z innym kodem/transakcją.
I wreszcie, hipoteza #4. Nie było żadnego race condition czy błędów w systemach BLIK lub PKO BP. To był atak! Głodny Bożydar napisał sobie bota do bruteforcingu kodów BLIK-a na ekranie płatności za zamówienie w Pyszne.pl i po prostu trafił na aktualnie ważny kod. Kod, który Łukaszowi wygenerowała aplikacja PKO BP.
To też możliwe, ale wydaje nam się, że jeśli jakiś atakujący próbowałby takich numerów, to raczej robiłby to dla większych kwot, za które kupowałby złote iPhony albo dubajską czekoladę na kilogramy, a nie byle schabowego z ziemniaczkami za marne 51,79 ziko…
Która z hipotez jest prawdziwa?
Macie już swój typ? Dodatkowe informacje udzielone przez Łukasza zdają się sugerować hipotezę #2, czyli “gruby paluch Bożydara” lub hipotezę #3 “na skutek błędu dwie osoby widzą ten sam kod”.
Łukasz wspomniał nam bowiem, że po pierwszej próbie płatności i akceptacji transakcji w aplikacji, usłyszał od osoby przy kasie, że “jest odmowa”. Być może właśnie z powodu tego, że wpisany w Dino kod, został już chwilę wcześniej podany przez Bożydara na Pyszne.pl (i zaakceptowany przez Łukasza), więc inicjacja transakcji z tym samym, ale “spalonym” już kodem ze strony Dino została odrzucona.
Łukasz wygenerował więc kolejny kod i ten przeszedł. Sprawa jednak nie dawała mu spokoju, więc sprawdził historię transakcji w aplikacji i tak dowiedział się, że de facto oba potwierdzenia, których dokonał, skończyły się pobraniem środków. Tylko pierwsze z nich, dotyczyło transakcji, której nie realizował, na inną kwotę niż ta, którą pokazywała kasa w Dino no i nie w Dino a w Pyszne. Wrócił więc do sklepu po paragon “odrzuconej” transakcji:
Hipotezę #3.1 — błąd w routingu prośby o autoryzację — chyba można odrzucić, bo wtedy Dino nie otrzymałoby “odmowy” (albo Łukasz dostałby od razu drugą prośbę o autoryzację, tym razem swojego kodu).
Wciąż jest kilka pytań…
Wyjaśnienia wciąż jednak wymagają jeszcze te kwestie:
-
1. Czy możliwe jest, żeby dwie różne osoby próbujące zapłacić za coś kodem BLIK zobaczyły w tej samej chwili ten sam kod na swoich smartfonach?
2. Jak dokładnie wygląda proces wysyłania prośby o autoryzację transakcji BLIK w banku PKO BP? Czy prośbę o autoryzację transakcji kodem np. ABC DEF zobaczy tylko ten klient, któremu bank wcześniej wygenerował kod ABC DEF?
3. Czy Pyszne.pl może, na podstawie informacji o kodzie BLIK i dacie transakcji, ustalić który z klientów dokonał wtedy zakupu? Jeśli tak, co musi zrobić Łukasz, aby Pyszne.pl przekazało mu informację o adresie dostawy i zamawiającym? Jest mało prawdopodobne, że policja będzie się chciała zając sprawą dziwnie znikniętych 50 złotych.
Powyższe pytania przekażemy do BLIK-a, PKO BP oraz Pyszne i jeśli otrzymamy odpowiedzi, zaktualizujemy ten artykuł. Ale jeśli ktoś z Was zna odpowiedzi na te pytania już teraz, to dajcie znać w komentarzach.
Płacę BLIK-iem, co robić, jak żyć?
Płać dalej, tylko za każdym razem uważnie czytaj, jaką transakcję potwierdzasz. Bo jak widać, na drugim końcu Polski, głodny Bożydar może grubym paluchem przez przypadek wpisać Twój kod i postawisz mu kolację za friko. Albo iPhona.
PS. I na koniec, mała prośba, sprawdźcie czy znacie kogoś, kto 13 marca o 18:38 płacił 51.79 za zakupy na Pyszne.pl ale nie pobrało mu kasy? Bardzo chcielibyśmy poznać jego wersję wydarzeń. I dowiedzieć się co zjadł na kolację :-)