12.02.2018 | 09:20

Adam Haertle

Dlaczego walidacja po stronie klienta nie sprawdza się na giełdzie kryptowalut

Z giełdy kleptowalut zniknęły środki o wartości 170 milionów dolarów. Zazwyczaj była by to sensacja na miarę „słońce dzisiaj wstało na wschodzie”, jednak w tym wypadku śmiechu może być trochę więcej niż zwykle.

Przykrą wpadkę zaliczyła włoska giełda BitGrail. Kilka dni temu ogłosiła, że z jej kont zniknęły wirtualne żetony warte 170 milionów dolarów, jednak w komunikacie nie było mowy o włamaniu ani o żadnym innym pojedynczym incydencie. Sprawa zrobiła się ciekawa, a jej wyjaśnienie może być jeszcze ciekawsze.

Wzięło i zniknęło

Giełda handlowała między innymi żetonami Nano znanymi pod skrótem XRB. Skrót wziął się od poprzedniej nazwy – RaiBlocks, która została przemianowana na Nano, ponieważ nikt nie wiedział, jak poprawnie wymawiać jej nazwę. Komunikat giełdy brzmiał następująco:

Wewnętrzna kontrola wykazała nieautoryzowane transakcje prowadzące do niedoboru 17 milionów Nano

Skąd biorą się takie nagłe niedobory? Tu zapewne profesjonalnych wskazówek mógłby udzielić Mark Karpeles, szef giełdy MtGox, w której niedobory wyniosły około 650 000 BTC. Brak w komunikacie słów takich jak „hakerzy”, „włamanie” czy „incydent” sugerują, że proces powstawania niedoborów mógł być dłuższy. Co ciekawe, wskazują na to wcześniejsze wydarzenia. 20 grudnia giełda ogłosiła, ze wprowadza procedury KYC (identyfikacji klientów), ograniczając transakcje osób niezweryfikowanych do 0,5 BTC dziennie, a osób zweryfikowanych do 1,5 BTC. Co ciekawe, niektórzy użytkownicy skarżyli się, że po dwóch miesiącach proces weryfikacji nadal nie został przeprowadzony – mimo iż giełda deklarowała, ze zajmie to maksymalnie 24 godziny.

W styczniu z kolei pojawiły się problemy z wypłatami, które były regularnie zawieszane i odwieszane, a większe transakcje były opóźniane („ze względu na potrzebę ręcznej weryfikacji”). Pod koniec stycznia giełda ogłosiła, że przestaje obsługiwać klientów spoza Unii Europejskiej, co spowodowało spadek kursu XRB o ponad 20%. Działania giełdy miały duży wpływ na kurs XRB, ponieważ ze względu na nietypowy charakter XRB (osobny blockchain dla każdego konta) mało giełd wdrożyło jego obsługę. Gdy czekaliśmy na analizę problemu wartego 170 milionów dolarów, ciekawe wyjaśnienie incydentu pojawiło się na Reddicie.

Walidacja po stronie klienta, bo dlaczego nie

Anonimowy Redditor poinformował, że giełda miała wiele problemów z prawidłową implementacją kodu i problemy te mogły być wykorzystane do uszczuplenia jej sald Nano. Pierwszy i chyba najciekawszy miał polegać na tym, że walidacja salda dostępnego dla wypłaty odbywała się w Javascripcie po stronie przeglądarki klienta. Wystarczyło zatem zmodyfikować w narzędziach deweloperskich wypłacane saldo, a kwota nie była weryfikowana po stronie serwera i giełda przelewała tyle Nano, o ile się poprosiło. Błąd miał zostać później zauważony i naprawiony. Drugi błąd miał polegać na możliwości wypłaty z cudzego portfela na swój adres, co mogło spowodować powstanie ujemnego salda na koncie ofiary. Ujemne wartości podobno były ręcznie poprawiane w bazie przez administratora.

Anonimowy informator nie dostarczył dowodów swoich twierdzeń, jednak w sytuacji, gdy kleptowaluta magicznie znika z giełdy, możliwości są dwie – kradnie ją obsługa lub osoby z zewnątrz. W tym wypadku wyjaśnienia zamieszczone na Reddicie brzmią wiarygodnie – ktoś odkrywa błąd, kradnie środki, właściciel próbuje uratować sytuację ograniczając wypłaty, kurs jednak spada, środki topnieją, trzeba w końcu ogłosić niewypłacalność. Identyczny ciąg wydarzeń miał miejsce w MtGox. Pamiętajcie, nie trzymajcie na giełdzie (ani nigdzie poza portfelem offline) więcej niż możecie stracić.

Powrót

Komentarze

  • 2018.02.12 12:49 Q

    Aż mi się przypomniał przykład z książki do HTML/JavaScript z lat 200X w którym hasło było sprawdzane w JavaScript.

    Odpowiedz
  • 2018.02.12 17:04 Jacek

    kleptowaluta XD

    Odpowiedz
  • 2018.02.12 19:33 Janusz Krótkowski

    „But this check was only on java-script client side, you find the js which is sending the request, then you inspect element – console, and run the java-script manually, to send a request for withdrawal of a higher amount than in your balance.

    Bitgrail delivered this withdrawal.”

    WTF KUWA!!! xD Te giełdy mnie rozbrajają, czekam aż znowu będziemy sobie btc na forach rozsyłać za frajer. ;D

    Odpowiedz
  • 2018.02.13 17:00 qwerty

    pozdrowienia dla bitcurex = zlodzieje w białych rekawiczkach zgodnie z prawem. Juz dawno magicznie nie wyparowały żadne kryptowaluty z polskiej gieldy moze juz czas?

    Odpowiedz
  • 2018.02.14 16:18 Tomasz Miroszkin

    Jeżeli ktoś chce zająć się BTC to pełny węzeł jest obowiązkowy, najlepiej na dedykowanym i dobrze zabezpieczonym komputerze. Dopiero z niego można „drukować” sobie offline konta i schować w szafie swoje BTC. Jeżeli ktoś chce aktywnie GRAĆ … to jest głupi.

    Odpowiedz

Zostaw odpowiedź do qwerty

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Dlaczego walidacja po stronie klienta nie sprawdza się na giełdzie kryptowalut

Komentarze