Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Pokazał jak wytworzyć dowolną liczbę pieniędzy z $25 – podatność Race Condition obsłudze kart podarunkowych
W dzisiejszym odcinku vulnz ciekawy przykład zastosowania kontrowersyjnej podatności Race Condition w świecie webowym. Kontrowersyjnej – bowiem wielu nie wierzy, że występuje ona w rzeczywistości. Zobaczmy więc konkretny, świeży przykład w serwisie reverb.com
Autor badania na początek uzbroił się w Turbo Intruder – rozszerzenie do opisywanego w sekurakowej książce narzędzia Burp Suite. Na nasze potrzeby wystarczy wiedzieć, że moduł umożliwia generowanie dużej liczby równoległych żądań HTTP oraz analizę odpowiedzi. O to chodzi w podatności race condition – wygenerujmy ogromną liczbę równoległych żądań i zobaczmy czy niektóre z nich nie zostały obsłużone w sposób niezgodny z wolą twórcy aplikacji.
Autor testował wymianę karty podarunkowej (o wartości np. $25) na gotówkę. Jeśli zrealizuje się to równolegle wiele razy, to być może kilka razy otrzymamy gotówkę, zanim karta nie zostanie oznaczona jako wykorzystana? Tak dokładnie się stało – poniżej widać, że jedna karta została zamieniona na gotówkę aż 7 razy (status odpowiedni HTTP 200 oznaczał w tym przypadku udaną wymianę):
Jest też potwierdzenie na koncie hackera (7*$25 = $175)
Za zgłoszenie podatności przyznano bounty w wysokości $1500, a dla nas nauczka – pamiętajmy żeby operacje typu: użycie kodów rabatowych, realizacja przelewów, wymiana kart rabatowych na gotówkę zawsze wykonywać atomowo. Wydawałoby się, że lekcja została udzielona jakiś czas temu (patrz przykład klonowania kart podarunkowych Starbucksa – 2015 rok), jednak chyba nie wszyscy chcą się uczyć ;)
Pamiętajmy również, że to tylko jedno możliwe wykorzystanie race condition w aplikacjach webowych (inne przykłady zobaczcie tutaj czy tutaj; nie ustrzegł się go i serwis HackerOne: problematyczny był proces wypłaty pieniędzy tzw. retesty – można było wypłacić sobie dowolną liczbę środków).
Na koniec jeszcze inne ciekawe zastosowanie race condition w świecie rzeczywistym: firma zgłasza się o zastrzeżenie znaku towarowego, Urząd Patentowy publikuje przyjęcie wniosku. Teraz kto pierwszy wyśle pismo do firmy-potencjalnej-ofiary? Urząd czy przestępcy? Kto wygra wyścig, otrzyma przelew…
–ms
Warto zauwazyc, ze podatnosc ta wystepuje tylko po stronie klienta a nie servera, jezeli wysylasz dodatkowe zadanie z zakupem to nie przejdzie to walidacji, wiec nie jest to tak naprawde blad.