Term Finance вынесли на $8,5 млн через честное голосование: хакер занёс 0,5 ETH и получил 90,66% голосов
Что произошло
Term Finance вынесли на $8,5 млн через честное голосование.
Хакер занёс в протокол всего 0,5 ETH, а система записала ему 90,66% голосов.
Как он получил почти все голоса с долей 0,017%? Тут начинается настоящий DeFi.
Когда человек вкладывал деньги в Term, он получал токен-квитанцию tmvETH, подтверждающую его долю в хранилище. Но права голоса эта квитанция автоматически не давала.
Чтобы голосовать, её нужно было отдельно завернуть в другой токен — gtmvETH. Большинство вкладчиков этого не сделало.
Хакер внёс 0,5 ETH, получил 0,485 tmvETH и завернул их в голосующие токены.
Его реальная доля составляла жалкие 0,017% от всех денег в ETH-хранилище, но среди выпущенных бюллетеней он контролировал уже 90,66%.
Какие последствия
Правила тоже помогли.
Предложение мог создать кто угодно, даже без голосов. Для кворума хватало 5% выпущенных бюллетеней, для победы требовалось больше половины.
После победы хакер предложил отключить семидневную задержку на вывод, подключить собственный контракт и отправить туда деньги вкладчиков.
В результате из протокола вывели около $8,5 млн.
Почему это важно
Самое прекрасное — крупнейшее предложение из 17 действий лежало в блокчейне около 145 часов.
Почти шесть суток там буквально было написано, что сейчас отключат замок и вынесут кассу.
То есть проблема оказалась не в какой-то магической атаке на блокчейн. Хакер воспользовался особенностями самой системы голосования: реальная доля средств и доля голосующих токенов оказались совершенно разными величинами.
Фактически человек с 0,017% средств получил контроль над 90,66% голосов, после чего смог провести предложение, открывающее доступ к деньгам вкладчиков.


