W niedzielę 30 lipca 2023 r. światem zdecentralizowanych finansów wstrząsnął poważny atak wykorzystujący lukę w języku programowania Vyper używanym przez kilka pul płynności protokołu Curve. W jaki sposób atakującym udało się ukraść ponad 41 milionów dolarów?
Wina leży po stronie luki w języku Vyper
Atakujący wykorzystali lukę w niektórych pulach płynności Curve, popularnego zdecentralizowanego protokołu finansowego (DeFi). Podatność została prześledzona wstecz do Vyper, alternatywnego języka programowania dla inteligentnych kontraktów Ethereum.
W rzeczywistości kilka pul Curve wykorzystujących Vyper zostało wykorzystanych, co spowodowało straty szacowane na 41 milionów dolarów według firmy ochroniarskiej BlockSec. W rzeczywistości okazało się, że wersje 0.2.15, 0.2.16 i 0.3.0 Vyper są podatne na atak typu reentrance.
Mówiąc konkretnie, ma to miejsce, gdy funkcja inteligentnego kontraktu wykonuje zewnętrzne połączenie z innym niewiarygodnym inteligentnym kontraktem. Ten ostatni wykonuje następnie rekurencyjne wywołanie oryginalnej funkcji w celu wyczerpania środków. Ponieważ inteligentny kontrakt nie aktualizuje swojego stanu przed wysłaniem środków, atakujący może stale wywoływać funkcję wypłaty w celu opróżnienia środków.
Według analizy przeprowadzonej przez firmę Ancilia, 136 inteligentnych kontraktów korzystało z Vyper 0.2.15, 98 inteligentnych kontraktów korzystało z Vyper 0.2.16, a 226 inteligentnych kontraktów korzystało z Vyper 0.3.0:
Zrobiliśmy szybki run na github.
Znaleziono 136 kontraktów skompilowanych z vyper 0.2.15 i korzystających z ochrony rekurencyjnej;
98 kontraktów znalezionych z wersją 0.2.16
226 znalezionych kontraktów z wersją 0.3.0– Ancilia, Inc (@AnciliaInc) July 30, 2023
W rezultacie kilka pul zostało całkowicie opróżnionych z płynności:
- Pula CRV-ETH firmy Curve: strata w wysokości 14 mln USD
- Pula alETH-ETH firmy Alchemix: straty w wysokości 13,66 mln USD;
Pula pETH-ETH - JPEG: 11,4 miliona dolarów straty;
Pula sETH-ETH Metronome: straty w wysokości 1,6 miliona dolarów.
Na Twitterze Vyper wyjaśnił, że usterka była spowodowana kompilatorem języka programowania, który zawiódł w niektórych przypadkach. W rezultacie zabezpieczenia przed atakami typu reentrance nie działały.
Token CRV gwałtownie spada
Po ataku na pule Curve, cena CRV zaczęła gwałtownie spadać. CRV spadł z 0,70 USD do 0,59 USD w ciągu zaledwie 60 minut, co stanowi spadek o około 16%:

Ewolucja ceny CRV po ataku