Bezpłatne Dni Otwarte Sekurak Academy! Hackowanie na żywo, szkolenia, ebooki, …

Największy włam w historii giełd kryptowalut – z portfela ByBit zniknęła równowartość prawie 1,5 miliarda dolarów – co wiemy do tej pory

03 marca 2025, 14:17 | Aktualności | 0 komentarzy

Kryptowaluty, przez niektórych są złośliwie nazywane kleptowalutami z racji na silną tendencję do nieoczekiwanej zmiany właściciela trzymanych w blockchainie dóbr. Tak też stało się i tym razem. W tej historii mamy wszystko: największy włam w dziejach zdecentralizowanych walut cyfrowych, Północną Koreę, drugą największą giełdę kryptowalut na świecie ByBit, kryptowalutę Ethereum wraz z mechanizmem Safe{Wallet}, AWS S3 oraz członków grupy Lazarus, którzy dosadnie pokazali, że najsłabszym ogniwem prawie zawsze jest człowiek. Jak połączyć te kropki? Zapraszamy na fascynującą podróż do świata kryptowalut!

TLDR:

  • W opublikowanym kilka dni temu raporcie światło dzienne ujrzały szczegóły techniczne jak doszło do włamania
  • Metoda ataku była prosta – przejęcie komputera jednego z developerów bezpiecznego portfela Safe{Wallet} dla kryptowaluty Ethereum, następnie kradzież poświadczeń do produkcyjnego bucketa S3, a ostatecznie załadowanie malware podmieniającego transakcje w locie
  • Kto za nim stał – potwierdzają się istniejące w sieci spekulacje o połączeniu z północnokoreańską grupą Lazarus
  • W efekcie wykradziono ponad 400 tysięcy tokenów ETH o wartości prawie 1,5 miliarda dolarów amerykańskich

Zacznijmy od Ethereum. Jest to zdecentralizowany blockchain, który realizuje transakcje peer-to-peer, gdzie każdy chętny może poszerzyć sieć o swój tzw. walidator, o ile ma serwer oraz 32 tokeny ETH. Każdy użytkownik sieci posiada klucz prywatny, z którego wyliczane są publiczne adresy portfeli (używane jako klucze publiczne). Typowa reprezentacja takiego adresu to 42 znaki heksadecymalne  rozpoczynające się zawsze od 0x – przykładowo 0xDEADBEEF71C7656EC7ab88b098defB751B7401B5. To klucz prywatny pozwala na dysponowanie środkami należącymi do danego adresu. Kolejną warstwą są kontrakty działające na blockchainie, czyli programy hostowane w samym łańcuchu bloków, wykonujące akcje na środkach tam umieszczonych. Na samej górze są aplikacje końcowe – dApps, najczęściej zwykłe strony internetowe, używające dedykowanego dodatku w przeglądarce zwanego portfelem kryptowalut. Czasami dla takich stron używa się terminu Web 3.0, gdzie w odróżnieniu od wersji 2.0 mamy opcję zalogowania się portfelem, zamiast jak dotychczas loginem i hasłem, czy za pomocą zewnętrznego dostawcy jak Google, Microsoft czy Apple. W takim przypadku zamiast unikalnego adresu email mamy widoczny unikalny publiczny adres portfela. Całość, czyli blockchain, kontrakty oraz aplikacje zdecentralizowane (dApps) tworzą spójny ekosystem, stanowiący alternatywę dla tradycyjnych finansów.

Finał wspomnianej akcji dział się w piątek, 21 lutego 2025. W efekcie włamania z portfela giełdy “wyparowało” około 400 tysięcy tokenów ETH o wartości (na dzień ataku) około 1,5 miliarda dolarów. Zapytacie się jak? Już spieszymy z wytłumaczeniem.

Giełdy kryptowalut, po wielu latach przykrych doświadczeń związanych z włamaniami, rozdzielają środki klientów, którymi zarządzają, na kilka klas portfeli. Jedna z klas to tzw. gorący portfel (hot wallet), czyli portfel operacyjny, zawierający najwyżej kilka procent posiadanych środków. Portfele takie były w przeszłości ofiarą włamań, więc ich zawartość jest na tyle wysoka, żeby zapewnić płynność giełdzie (możliwość wpłaty i wypłaty dla większości klientów), a jednocześnie na tyle niska, żeby ewentualny atak nie odbił się negatywnie na jej finansach. Klucze do zarządzania środkami w tych portfelach są wykorzystywane przez automatyczne mechanizmy oraz używane na szeregu maszyn, które siłą rzeczy są połączone do publicznej sieci Internet. 

Druga klasa portfeli to tzw. zimny portfel (cold wallet). Tutaj giełdy trzymają większe środki, często zabezpieczone za pomocą portfeli sprzętowych takich jak Trezor czy Ledger. Sam portfel sprzętowy to jednak mało, gdyż nadal operatorem jest jedna osoba. Na ratunek przychodzą portfele opcją wielu właścicieli – tzw. multisig. W przypadku takiego rozwiązania właściciel współdzielonego portfela (pierwsza osoba, która go tworzy) definiuje politykę. Przykładowo mając 5 współwłaścicieli, można zdefiniować, że transakcja zostanie poprawnie wysłana dopiero po otrzymaniu minimum trzech poprawnych podpisów. Jednym z takich właśnie rozwiązań jest Safe{Wallet}. Konceptualnie przypomina to podział klucza jak w przypadku Shamir’s secret sharing, jednak tutaj dzieje się to podstawie smartkontraktu w sieci Ethereum. 

Tutaj musimy wrócić do paragrafu opisującego sieć Ethereum. Portfel Safe{Wallet}, to tak naprawdę dwa osobne komponenty. Pierwszy z nich to zestaw tzw. smart kontraktów w blockchainie, czyli programów, które wykonują operacje na środkach, które zostały im powierzone. Bez wchodzenia w zbytnie szczegóły – taki program może działać tak, że wyśle transakcję pod dany adres dopiero po otrzymaniu poprawnych podpisów od 3 osób zdefiniowanych w zmiennych wejściowych. Adres należący do tego programu staje się wtedy depozytariuszem środków i od działania programu zależeć będzie co się z nimi stanie. Można to podsumować koncepcją kod jako prawo w tradycyjnym świecie. Drugi komponent to UI (ang. User Interface), czyli tak naprawdę standardowa strona internetowa z odpowiednimi bibliotekami JS. W przypadku Safe jest to https://app.safe.global/

Strona zbudowana jest z nowoczesnych komponentów webowych, dokładnie takich samych jak w przypadku każdej innej strony — takich jak ReactJS, Firebase czy użycie CDN. Jedyna różnica to dodatkowa, dedykowana biblioteka do obsługi Web3.0 jak web3.js. Safe{Wallet} używa infrastruktury AWS, w tym bucketa S3 do serwowania części frontendowej i to był główny element wykorzystany w ataku. Jak? Tego się (jeszcze) nie dowiedzieliśmy…

Jedyna rzecz, o której wspominają dwa osobne raporty opublikowane przez giełdę ByBit dotyczące tego incydentu to przejęcie komputera jednego z developerów. Na komputerze tym atakujący znaleźli działający produkcyjny klucz API oraz sekret do bucketa S3 w Amazonie, a reszta to już historia…

Po pierwsze, kilka dni przed atakiem (18 lutego 2025), atakujący umieścili w sieci Ethereum dwa złośliwe kontrakty. Pierwszy pod adresem 0x96221423681A6d52E184D440a8eFCEbB105C7242, który to zawierał złośliwą funkcję czyszczącą portfel oraz 0xbDd077f651EBe7f7b3cE16fe5F2b025BE2969516, który pozwalał na wypłatę wykradzionych później środków. 

Kolejnym etapem był rekonesans, czyli znalezienie adresów zarówno celu (adres portfela cold wallet giełdy ByBit) jak i portfeli dodanych jako współwłaściciele. Adresy te, uzupełnione o stworzone wcześniej złośliwe kontrakty zostały następnie użyte w kodzie złośliwego pliku .js. 

Rysunek 1. Screenshot prezentujący złośliwy kod JavaScript (źródło: raport firmy verichains.io)

Plik ten już 19 lutego 2025 został umieszczony przez atakujących w buckecie S3 Amazona należącym do Safe{Wallet}, dokładnie pod adresem https://app.safe.global/_next/static/chunks/pages/_app-52c9031bfa03da47.js. Kod ten był wykonywany dla każdego użytkownika portfela Safe między 19 a 21 lutego 2025, jednak atak był celowany tylko i wyłącznie w cold wallet giełdy ByBit. Środki innych użytkowników, którzy w tym czasie używali portfela, powinny być bezpieczne. Malware odpalił się dopiero w specyficznych warunkach 21 lutego 2025 o 12:30 UTC, gdy zarządzający giełdą spotkali się w celu rutynowej operacji doładowania środków hot walleta. Każda z osób podpisała swoim portfelem standardową transakcję, która jednak została przekierowana do złośliwego kontraktu, który to przekazał całą kontrolę nad środkami w sejfie w ręce atakujących. Stąd nastąpił ostatni krok, czyli użycie wbudowanej funkcji sweepETH oraz sweepERC20 w zbackdoorowanym kontrakcie. W ten sposób zimny portfel giełdy został doszczętnie wyczyszczony. Atakujący szybko usunęli złośliwy plik JS, żeby utrudnić znalezienie wektora ataku. Rodzi to wiele pytań. Jak to się stało, że ktoś podmienił produkcyjny kod w buckecie S3? Czemu złośliwy kod leżał tam kilka dni, niezauważony przez nikogo? Gdyby nie skala włamania, możliwe, że malware mogłoby tam wisieć miesiącami, powoli przejmując kontrolę nad każdym z portfeli. A co, jeśli tak się już stało, a jeszcze o tym nie wiemy?

Użytkownicy, którzy korzystają na co dzień z kryptowalut zapewne zastanawiają się, czemu nikt nie spojrzał na to co podpisuje? Można tutaj doszukiwać się problemów z interfejsem portfeli sprzętowych. Używany przez CEO giełdy Bena Zhou portfel Ledger posiada (domyślnie wyłączony) tryb Blind Signing, który pozwala na podpisane transakcji, która… właściwie nie wiadomo co robi. Temat był poruszany już wielokrotnie, jednak po tym największym włamaniu w historii, branża wykonała już odpowiednie kroki w kierunku zapewnienia bezpieczeństwa podpisywania transakcji. 

Ten incydent po raz kolejny podkreśla, że nasza branża musi wyjść poza modele bezpieczeństwa oparte na zaufaniu, ponieważ atakujący stają się coraz bardziej wyrafinowani. Nie możemy nadal podpisywać transakcji w ciemno i oczekiwać, że wszystko będzie w porządku. Kluczową ewolucją, którą obserwujemy, jest przejście w kierunku rozwiązań bezpieczeństwa klasy korporacyjnej, które łączą Clear Signing z solidnymi strukturami nadzoru” – powiedział Guillemet, prezes firmy Ledger, produkującej portfele sprzętowe.

Kolejnym potencjalnym problemem poruszonym w trzecim z kolei raporcie firmy ledgerinsights,  jest nieintuicyjnie nazwana metoda kontraktu Safe{Wallet}. Nazywa się niewinnie Operation. Jej zmiana ze standardowego 0 na 1 powoduje, że oddajemy możliwość transferu środków z portfela zewnętrznemu adresowi… 

Rysunek 2. Screenshot pokazujący złośliwą transakcję w serwisie etherscan.io (źródło raport ledgerinsights.com)

Wróćmy teraz do grupy Lazaraus. Skąd wiadomo, że za atakiem stoi Korea Północna? Wskazują na to twarde dowody. Główne źródło to ZachXBT – badacz bezpieczeństwa on-chain. Znalazł on powiązane portfele z poprzednimi hackami – m.in. giełdy Phemex. Dane te zostały potwierdzone przez Arkham Intelligence – jedną z bardziej znanych w branży firm do analizy danych blockchain. 

Rysunek 3. Powiązania atakujących giełdę ByBit z grupą Lazarus (źródło: ZachXBT / X)
Rysunek 4. Standardowa ilustracja powiązana z rynkiem kryptowalut.

Co dalej? Jak to w blockchainie bywa, nie ma scentralizowanych instytucji, więc pozostaje pogodzić się ze stratą. Oczywiście prowadzone są akcje zaradcze, takie jak zamrożenie aktywów, które hackerzy z grupy Lazarus zdążyli wymienić na cyfrowe dolary. Tutaj brawa za szybką akcję dla Circle (wydającym tokeny USDC) czy Tether (USDT). Na marginesie warto nadmienić, że waluty te są w pełni scentralizowane i w pełni kontrolowane przez wyżej wymienione podmioty. Do działań przyłączyła się praktycznie cała branża kryptowalut – z jednej strony blokując możliwość wymiany środków przez dodanie portfeli atakujących na czarną listę (THORChain, ChangeNOW, FixedFloat, Avalanche, CoinEx, Bitget, Lido Finance, Solana Foundation, Orbiter, deBridge), a z drugiej pomagając śledzić transakcje.

W ramach walki z grupą Lazarus został powołany specjalny fundusz Bug Bounty opiewający na zawrotną kwotę 140 milionów dolarów. Każdy, kto przyczyni się do zwrotu czy zamrożenia środków może zostać sowicie wynagrodzony. Jest to bodajże największy program nie tylko w branży kryptowalut, ale też ogólnie w dziedzinie bezpieczeństwa. Pozostali uczestnicy, nawet tacy giganci jak Meta, Google, Apple czy Facebook mają pulę “jedynie” do maksymalnie 2 milionów dolarów

Rysunek 5. Największy na świecie program Bug Bounty (źródło: screenshot redakcji)

Dla każdego chętnego link do programu – https://www.lazarusbounty.com/en 

Życzymy powodzenia! Jak widać na dzień pisania tego artykułu, z programu wypłacono już ponad 4 miliony dolarów. 

~bq

Chcesz dowiedzieć się więcej o bezpieczeństwie blockchain? W https://sekurak.academy mamy serię szkoleń „Hackowanie smart kontraktów” autorstwa Grzegorza Trawińskiego, zapraszamy.

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz