Home » Błąd w blockchainie Solana (SOL) mógł spowodować utratę setek milionów dolarów

Błąd w blockchainie Solana (SOL) mógł spowodować utratę setek milionów dolarów

by Patricia

Użytkownicy ekosystemu Solana mogą podziękować zespołowi ekspertów ds. bezpieczeństwa z Neodyme za wykrycie i naprawienie błędu, który pozwalał każdemu na kradzież tysięcy dolarów na sekundę z wielu protokołów. Wykryli oni i naprawili błąd, który pozwalał każdemu na kradzież tysięcy dolarów na sekundę z wielu protokołów.

A bug reported but never fixed

Neodyme to zespół badaczy cyberbezpieczeństwa z doświadczeniem w różnych technologiach, w tym blockchain i smart contracts. W oświadczeniu opublikowanym na swoim blogu, Neodyme ujawnił, że niedawno odkrył krytyczną dziurę w protokole Solana Program Library (SPL).

Błąd został pierwotnie odkryty w czerwcu ubiegłego roku przez badacza z zespołu Neodyme i upubliczniony na GitHubie. Wyjaśnia jednak, że w tym czasie nie można było stwierdzić, czy błąd jest możliwy do wykorzystania. Dlatego też nie zostało to zauważone.

Jednak 1 grudnia ten sam badacz stwierdził, że błąd jest nadal obecny i nic nie zostało zrobione, aby go naprawić. Ponadto, zagraża wielu protokołom w ekosystemie Solana (SOL), takim jak agregator plonów Tulip Protocol oraz platformy pożyczkowe Solend i Larix. Projekty, które obecnie zarządzają środkami w wysokości 1,7 mld USD.

Zespół Neodyme przeprowadził więc serię testów, aby sprawdzić, czy ta luka może zostać wykorzystana i ostatecznie naprawiona. Zgodnie z komunikatem prasowym, praca badaczy i wkład zespołów zainteresowanych protokołów umożliwiły szybkie naprawienie sytuacji i ochronę użytkowników. Ale co to był za błąd i co mogło się stać?

A simple rounding error…

W dalszej części publikacji Neodym wyjaśnia, jak działał błąd, który zagrażał Bibliotece Programu Solana. Mówiąc prościej, kiedy wpłacasz środki do protokołu, wartość Twoich aktywów zmienia się w czasie. W momencie wypłaty może mieć wiele cyfr po przecinku. Dlatego niektóre protokoły polegają na SPL, aby zaokrąglić zwracaną kwotę do najbliższego miejsca po przecinku.

Rozważmy najmniejszą jednostkę referencyjną w ekosystemie Solana. Nazywa się Lamport i jest wart 0.000000001 SOL (na tej samej zasadzie co satoshi, najmniejsza jednostka w Bitcoin). Jeśli wpłacisz do protokołu kredytowego kwotę 1,5 Lamporta, to przy wypłacie otrzymasz 2 Lamporty. I odwrotnie, jeśli ta kwota jest warta tylko 1,4 Lamporta w momencie wypłaty, otrzymasz tylko 1 Lamport. Przeciętnie powinno się to bilansować, tworząc tyle samo wartości, co usuwając.

Badacze wykazali jednak, że działając w tym systemie bardzo szybko, możliwe jest odzyskanie niewielkich kwot pieniędzy przy każdej wpłacie i wypłacie. Powtarzając operację wiele razy, całkowita odzyskana kwota może być naprawdę znacząca.

To mogło kosztować setki milionów dolarów!

Testując swoją teorię na replikowanym blockchainie, ekspertom z Neodyme udało się ukraść 0,000001 BTC (0,047 USD). Oszacowali, że mogą wykonać ten błąd 150 do 200 razy w pojedynczej transakcji i umieścić kilka z tych transakcji w jednym bloku. Taka strategia mogłaby więc kraść środki w tempie 7 500 dolarów na sekundę, czyli 27 milionów dolarów na godzinę.

Jeśli chodzi o całkowitą kwotę, która mogła zostać skradziona, zależy to oczywiście od tego, jak długo dziura była wykorzystywana, zanim została zauważona i wprowadzono odpowiednie zabezpieczenia:

Atak trwałby kilka dni, więc mógł zostać przerwany do czasu, gdy został zauważony. Ale to jest naprawdę trudne do zauważenia i nie jesteśmy pewni, czy ktokolwiek ma wystarczający nadzór, zwłaszcza gdy atak jest przeprowadzany powoli i ostrożnie” – czytamy w oświadczeniu.

Badania przeprowadzone przez zespół Neodyme zidentyfikowały sześć protokołów potencjalnie zagrożonych naruszeniem: Larix, Tulip, Port, Solend, Soda i Acumen. Łączna wartość zarządzanych aktywów, a więc narażonych na ryzyko, wynosi około 1,7 mld USD. Nie wszystkie z nich były faktycznie zagrożone, ale Neodyme szacuje, że potencjalny zysk był nadal w setkach milionów dolarów.

Related Posts

Leave a Comment