Jak przez weekend można było robić darmowe zakupy w Żabce

dodał 23 stycznia 2023 o 17:21 w kategorii Info, Wpadki  z tagami:
Jak przez weekend można było robić darmowe zakupy w Żabce

W ostatni weekend niektóre zakamarki sieci zalały zrzuty ekranu aplikacji Żabki, w której pojawiały się niebotyczne salda żappsów (żabkowej „waluty”), czasem sięgające setek tysięcy. Niektórzy oszuści zdążyli się solidnie obłowić, robiąc „zakupy za darmo”.

Na pierwszy ślad problemów Żabki natrafiliśmy w sobotę wieczorem, gdy na jednym z kanałów Discorda pojawiły się zrzuty ekranu z aplikacji Żabki „żappka”, pokazujące nietypowo wysokie salda posiadanych przez użytkownika „żappsów”, czyli punktów otrzymywanych za niektóre zakupy, które następnie można wymieniać na kupony umożliwiające darmowe zakupy wybranych towarów. Kolaż przykładowych zrzutów ekranów poniżej.

Jak to się stało?

Dzięki anonimowym informatorom (dziękujemy!) otrzymaliśmy nie tylko zrzuty ekranu, ale także fragment kodu, który był używany do nabijania salda żappsów. Kod (po małej cenzurze) wyglądał tak:

token = "tutaj dość długi token w base64"
r = requests.post("https://zabka-snrs.zabka.pl/v4/events/custom", json={
"action": "points.upcharge",
"label": "label",
"client": {
"email": "TWOJMAIL"
},
"params": {
"displaySubheader": "zabij sie",
"description": "zabij sie",
"displayHeader": "Żappka",
"points": "100000"
}
}, headers={
"authorization": token,
"api-version": "4.4",
"Content-Type": "application/json"
})

Widzimy tutaj wywołanie interfejsu programistycznego (API) z poleceniem „dodaj punkty” (points.upcharge), wskazaniem adresu e-mail konta, która ma zostać „obdarowane” i liczby punktów, które należy dodać. Poleceniu towarzyszy dość długi ciąg znaków zwany tokenem. Opis tego API znajdziecie na stronie producenta SDK.

Z otrzymanych przez nas informacji wynika, że wysłanie takiego żądania do serwera Żabki faktycznie owocowało dodaniem punktów do wskazanego konta klienta. Obecność wysoce uprzywilejowanego tokenu w kodzie wskazuje, że oryginalni twórcy nieautoryzowanego żądania mieli dostęp do konta użytkownika systemu z uprawnieniami do dodawania dowolnej liczby punktów do kont klientów. Skąd mogli go mieć? Obstawiamy dane wykradzione za pomocą złośliwego oprogramowania z przeglądarki (ciasteczka zalogowanej sesji managera / dyrektora kupione w sklepie typu Genesis?) lub skuteczny phishing na pracowników firmy. Co ciekawe, choć pierwsze oszustwa widzieliśmy w sobotę, to token, który otrzymaliśmy, był wygenerowany w niedzielę – co sugeruje, że przestępcy posiadali dostęp do konta umożliwiającego generowanie nowych tokenów lub inne źródło aktualnych poświadczeń.

Według naszego informatora w zbudowaniu odpowiedniego żądania do serwera pomógł dostęp do wersji demo produktu, na którym oparta jest aplikacja Żabki. Nie byliśmy w stanie zweryfikować tej informacji.

Handel żappsami odbywał się w zaciszu serwerów Discorda, ale pojawiły się także oferty publiczne, jak np. ta na Allegro Lokalnie:

Wcześniej też można było kupić w sieci żappsy, ale cena oscylowała wokół 10 PLN za 1000 żappsów – a ta oferta z niedzieli była 3 razy niższa.

Reakcja Żabki

W niedzielę widać już było, że Żabka niektóre konta oszustów blokuje. W aplikacji pojawiał się im taki komunikat:

Zablokowane konto żappki

Nadal jednak można było nabijać punkty na konta za pomocą powyższego kodu. W okolicy północy Żabka wyłączyła niektóre funkcje związane z żappsami i incydent przeszedł z fazy aktywnej do fazy analizy. Najwyraźniej jednak reakcja firmy nie była wystarczająco szybka, ponieważ otrzymaliśmy od jednego z informatorów takie oto zdjęcie, przedstawiające serię darmowych zakupów w okolicznych sklepach:

Zakupy z Żabki

Poprosiliśmy także w niedzielę Żabkę o komentarz do tej sprawy. Oto odpowiedź, jaką przed chwilą otrzymaliśmy:

Szanowny Panie Redaktorze,

potwierdzamy, że w ostatnich dniach odnotowaliśmy przypadki doładowywania żappsami w nieuprawniony sposób wybranych kont użytkowników Żappki. W reakcji na te naruszenia dokonaliśmy blokady kont, na których doszło do niedozwolonych aktywności. Jesteśmy na etapie wyjaśniania całej sytuacji we współpracy z naszymi partnerami technologicznymi.

Pozdrawiamy
Biuro Prasowe Żabka Polska

Podsumowanie

Każda usługa, którą można w jakikolwiek sposób skomercjalizować, stanowi i będzie stanowić cel sprytnych przestępców. Możliwość dodawania punktów klientom bez wątpienia jest potrzebna – chociażby jako fragment procesu reklamacyjnego. Warto jednak w każdej tego typu aplikacji przyjrzeć się, jak wygląda zwykła skala takich operacji i zbudować mechanizmy wykrywania anomalii – jak na przykład jedno konto dodające kilkudziesięciu klientom milion żappsów w ciągu parunastu minut. Do tego dodajmy ograniczenie osób uprawnionych do takich operacji, ograniczenie dostępu do API (to działało dla każdego adresu IP), krótszy czas życia tokenów (token użyty w tym ataku był ważny do 22 kwietnia 2023) i szansa powtórki podobnego incydentu znacząco spada.

Całą sytuację pozostaje podsumować znanym memem w nowym wydaniu.