Децентрализираните финанси (DeFi) не са пощадени от хакове и тази седмица. Благодарение на сравнително добре познатата атака за повторна ориентация, нападателят успява да открадне 30 милиона долара от протокола Grim Finance.
Grim Finance открадна 30 млн. долара
Grim Finance (GRIM), протокол за децентрализирано финансиране (DeFi), потвърди новината в своя акаунт в Twitter. Тази събота тя стана жертва на атака, в резултат на която бяха загубени цифрови активи на стойност 30 милиона долара. Недостатъкът засяга директно трезорите и в момента всички средства на потребителите са изложени на риск.
Протоколът е реализиран в блокчейна Fantom Opera, изграден на езика Solidity и съвместим с Ethereum (ETH). Grim Finance твърди, че е „оптимизатор на комбинирана възвръщаемост“, което означава, че обещава да донесе възвръщаемост на вашите токени, като временно ги блокира в своите хранилища.
Здравейте, общност Grim,
С натежали сърца ви информираме, че нашата платформа беше използвана днес от външен нападател преди около 6 часа. Адресът на нападателите е идентифициран с кражба на стойност над 30 милиона долара тук https://t.co/qA3iBTSepb
– Grim Finance (@financegrim) December 19, 2021
В техническата си документация Grim заявява, че иска да „помогне на потребителите да получат повече награди без проблеми“. Очевидно не е вярно.
Какво е това нападение?
Според информация от Grim Finance хакерът е използвал доста често срещана атака с „повторение“. Това включва иницииране на заявка за теглене, след което се правят няколко други едновременно, докато първата все още се изпълнява. По този начин нападателят заблуждава протокола и извършва теглене, което надвишава общата сума в сейфа.
В такива случаи протоколите обикновено имат сигурност само при инициирането и завършването на вашата заявка. Те първо проверяват дали в сейфа ви има достатъчно средства за теглене. След това се извършва допълнителна проверка при потвърждаване на трансакцията, главно за изчисляване на начислените такси.
Ако приемем, че няколко заявки за теглене от целия сейф са направени едновременно, преди някоя от тях да бъде потвърдена. След това всяка от тях ще бъде разрешена и ще можете да изтеглите повече, отколкото действително имате. Това е (много опростеният) принцип на „атаката на реентранслацията“.
Подробности за нападението:
Това беше авангардна атака. Нападателят атакува, като използва функцията beforeDeposit() от нашата стратегия за трезори, въвеждайки злонамерен договор с токени.
– Grim Finance (@financegrim) December 19, 2021
Какво е бъдещето на Grim Finance?
Атаките с повторение са сравнително често срещани в Етериум и започват да се разбират добре от протоколите. Всъщност Rugdoc.io, група за наблюдение на DeFi, съставена от одитори на интелигентни договори, твърди в поредица от туитове, че Grim Finance е пряко виновна. Кодът е трябвало да съдържа „защита от повторение“, т.е. специална защита срещу този тип атака.
Да се надяваме, че всички проекти могат да се поучат от този инцидент. Повечето опитни разработчици на Solidity разполагат с много знания. Ако все още не сте го разбрали, не изграждайте проекти за много милиони долари. Не се подлагайте на одит от компании, за които всички знаят, че са безполезни“, гласи един от туитовете.
Grim Finance премина през Solidity Finance, за да провери сигурността на кода на интелигентните договори на техния протокол. Според техния доклад „ReetrancyGuard се използва, когато е необходимо, за да се предотвратят атаките с повторна концентрация“. Отново грешка.
Като удар по икономиката на екосистемата Grim Finance, токените GRIM бързо понесоха удара на новината. Цената спадна с повече от 80% – от около 0,8 долара до едва 0,15 долара в най-ниската си точка. Към момента на писане на статията тя се търгува за $0,2.

Еволюция на цената на токена GRIM (източник: CoinGecko)
Сутринта в неделя някои трезори бяха временно отворени, за да могат потребителите да изтеглят средствата си. Въпреки това от късния следобед всички депозити и тегления в трезорите на Grim Finance са спрени, за да се избегнат по-нататъшни инциденти