Протокол Beanstalk - REKT



$181 миллион украден у протокола Beanstalk, но злоумышленник оставил себе всего лишь $76 миллионов.

rekt.news ведет учет потерь, а не прибылей, поэтому этот прецедент занимает строчку #5 в рейтинге.

Вредоносное управленческое предложение протолкнули с помощью флэш-займа, и затем атакующий проголосовал за то, чтобы самостоятельно перевести активы.

Еще ~24800 ETH отправились в Tornado Cash, а 250K украденных денег - в военный фонд Украины.

Сколько еще может продолжаться эта волна преступности?

Источник: Игорь Игамбердиев, Peckshield, Келвин Фиштер

Эта атака была проведена через механизм управления, и она стала возможной благодаря использованию флэш-займов в совокупности с отсутствием отсрочки исполнения предложения.

Злоумышленник временно получил достаточное количество голосов, чтобы немедленно исполнить срочное вредоносное предложение по управлению, опустошив протокол.

Несмотря на то, что атака была молниеносной, понадобилась некоторая подготовка:

...Контракт $BEAN предусматривает ~1 день отсрочки для всех действий по управлению. Злоумышленник на самом деле настроил все это вчера, когда были введены два предложения по управлению.

Первое предложение (предложение #18) крадет все деньги из контракта. Следующее предложение (предложение #19) посылает эквивалент $250k $BEAN на адрес пожертвований Украине. Украинское предложение названо Bip18 (вместо Bip19)...

Как только время отсрочки истекло, атака могла быть приведена в действие:

Эксплоитер получил фонды через мост протокола Synapse [хотя изначально через Tornado].

Он использовал флэш-займ, чтобы получить:

350M DAI, 500M USDC, и 150M USDT от Aave;

32M BEAN от Uniswap v2;

11.6M LUSD от SushiSwap.

Эти токены были использованы, чтобы добавить ликвидность в форме BEAN в пулы Curve для управленческого голосования.

Далее, он провел голосование за фальшивый BIP-18 и затем переместил фонды из контракта протокола эксплоитеру.

Следующим шагом был вывод ликвидности, выплата флэш-займов и конвертирование всех полученных фондов в 24.8k WETH ($76M), которые отправились на Tornado Cash.

Хакер: 0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4

Контракт хакера: 0x79224bc0bf70ec34f0ef56ed8251619499a59def

BIP18: 0xe5ecf73603d98a0128f05ed30506ac7a663dbb69

Транзакция по предложению BIP18: 0x68cdec0ac76454c3b0f7af0b8a3895db00adf6daaf3b50a99716858c4fa54c6f

Peckshield предоставили пошаговый ход атаки

Хакер предлагает вредоносное предложение BIP c initAddress

Запускает транзакцию взлома: 0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

  1. Берет флэш-займ в размере 350,000,000 DAI, 500,000,000 USDC, 150,000,000 USDC, 32,425,202 BEAN, и 11,643,065 LUSD

  2. Vyper_contract_bebc.add_liquidity 350,000,000 DAI, 500,000,000 USDC, 150,000,000 USDT чтобы получить 979,691,328 3Crv

  3. LUSD3CRV-f.exchange, чтобы перевести 15,000,000 3Crv в 15,251,318 LUSD

  4. BEAN3CRV-f.add_liquidity, чтобы конвертировать 964,691,328 3Crv в 795,425,740 BEAN3CRV-f

  5. BEANLUSD-f.add_liquidity, чтобы конвертировать 32,100,950 BEAN и 26,894,383 LUSD и получить 58,924,887 BEANLUSD-f

  6. Депозит 795,425,740 BEAN3CRV-f и 58,924,887 BEANLUSD-f в Diamond

  7. Diamond.vote (bip=18)

  8. Diamond. emergencyCommit(bip=18) и предложенный хакером _init contract исполнен, чтобы получить 36,084,584 BEAN и 0.54 UNI-V2_WETH_BEAN, 874,663,982 BEAN3CRV-f, 60,562,844 BEANLUSD-f в контракте хакера.

  9. BEAN3CRV-f.remove_liquidity_one_coin 874,663,982 BEAN3CRV-f, чтобы получить 1,007,734,729 3Crv

  10. BEANLUSD-f.remove_liquidity_one_coin 60,562,844 BEANLUSD-f, чтобы получить 28,149,504 LUSD

  11. Возвращает флэш-займ LUSD 11,795,706 и BEAN 32,197,543

  12. LUSD3CRV-f.exchange, чтобы обменять 16,471,404 LUSD на 16,184,690 3Crv

  13. Сжигает 16,184,690 3Crv, чтобы получить 522,487,380 USDC, 365,758,059 DAI, и 156,732,232 USDT

  14. Возвращает флэш-займ 150,135,000 USDT, 500,450,000 USDC, 350,315,000 DAI

  15. Сжигает UNI-V2_WETH_BEAN 0.54, чтобы получить 10,883 WETH и 32,511,085 BEAN

  16. Донатит 250,000 USDC Крипто-фонду Украины

  17. Своп 15,443,059 DAI на 15,441,256 USDC

  18. Своп 37, 228,637 USDC на 11,822 WETH

  19. Своп 6,597,232 USDT на 2,124 WETH

  20. 24,830 WETH прибыли переходят хакеру

И затем в Tornado.

Предположительно с целью избежать подозрения в инсайдерской работе, Publius - аноним, стоящий за протоколом, принял решение раскрыть свою личность, оказавшись группой из трех человек. Заявление было опубликовано в Discord.

Компания Omniscia подчеркивает, что эта атака выходила за рамки их аудита, однако в их отчете все же был комментарий относительно контракта управления.

В любом случае удивительно, что такая уязвимость не была замечена в какой-то момент, учитывая то, что флэш-займы не являются новой угрозой в DeFi-управлении. Отсрочка в исполнении он-чейновых предложений по управлению представляет собой один из способов предотвратить это.

Этот инцидент может побудить держателей инвестиционных пакетов более тщательно следить за предложениями по управлению.

Однако, среднестатистический пользователь может догадаться, что настолько продвигаемый проект, как Beanstalk может находиться под пристальным вниманием более искушенных глаз.

DYOR.


Поделиться

REKT представляет собой общественную площадку для анонимных авторов. Мы не несём ответственность за выражаемые точки зрения или контент на этом веб-сайте.

Пожертвование (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

Дисклеймер:

REKT не несет никакой ответственности за любое содержание, размещенное на нашем Веб-сайте или имеющее какое-либо отношение к оказываемым нами Услугам, независимо от того, было ли оно опубликовано или создано Анонимным Автором нашего Веб-сайта или REKT. Не смотря на то, что мы устанавливаем правила поведения и нормы публикаций для Анонимных Авторов, мы не контролируем и не несем ответственность за содержание публикаций Анонимных Авторов, а также за то, чем делятся и что передают Авторы с помощью нашего Сайта и наших Сервисов, и не несем ответственность за любое оскорбительное, неуместное, непристойное, незаконное или спорное содержание, с которым вы можете столкнуться на нашем Веб-сайте и на наших Сервисах. REKT не несет ответственность за поведение, будь то онлайн или офлайн, любого пользователя нашего Веб-сайта или наших Сервисов.