Что случилось с Harvest Finance?

Суть: Опытный фермер использовал flash loans, чтобы украсть $33.8 млн. из пулов FARM/USDT и FARM/USDC. (перевод статьи)

Всего лишь арбитраж

В течение двух часов, во время которых хакер взял $50 млн. USDT в качестве flash loan, fUSDT упал на 13.7% и $FARM упал на 67%. Затем он использовал Y pool на Curve Finance, чтобы свапнуть средства и растянуть цены стейблкоина в соответствующей пропорции.

Детальный анализ транзакций вот здесь.

В течение 7 минут были осуществлены следующий действия: (Спасибо @valentinmihov за информацию)

  1. Свап $11.4 млн. USDC to USDT -> цена USDT растет
  2. Депозит $60 млн. USDT в Vault
  3. Обмен $11.4 млн. USDT на USDC -> цена USDT падает
  4. Вывод $61.1 млн. USDT из Vault -> профит $0.5 млн.
  5. Отмыть и повторить 32 раза (без какого-либо тестирования)
  6. Сконвертить в renBTC и выйти в BTC/ETH через Tornado Cash

Хакер смог вывести больше USDT на шаге №4 из-за измененной цены USDT. Поскольку цена USDT была меньше на момент вывода, части пула соответствовали большему количеству USDT. Примерно 4 цикла вписывается в 10 млн. Gas Limit. И несмотря на то, что каждый цикл дает менее 1% профит, $500k в сумме набегает очень быстро.

Уязвимостью, которую атаковал хакер, была именно в механизме калькуляции цены для ввода/вывода из Liquidity пулов. Это значит, что можно было продолжить атаку и на пулы renBTC, FARM/TUSD и FARM/DAI. Хакер остановился получив $25 млн. или 17% пулов FARM/USDT и FARM/USDC, хотя мог с легкостью продолжить и забрать все $400 млн.

Стратегия по FARM/USDT имеет такой код

Что говорит о том, что считался какой-то ценовой индекс. Но поскольку они указали «tokenIndex», можно заключить, что они не просто использовали get_virtual_price(), но делали какие-то внутренние вычисления.

Уровень толерантности функции проверки на арбитраж была не слишком высокой, но уровень толерантности дефолтного слипеджа в 3% — слишком высок.

Соснули не все

Не только хакер получил профит. Liquidity пулы и разработчики Harvest в накладе не остались и получили от хакера «чаевые». Harvest заявили, что эти средства будут возвращены пострадавшим юзерам.

  • Хакер получил — $24,000,000
  • Uniswap пулы — $6,000,00
  • Разработчики Harvest — $2,500,000
  • Curve пулы — $1,000,000
  • Ethereum Gas — $100,000
  • RenVM комиссии $20,000

Холдеры токенов veCRV, участвуя в пулах также получили профит с экстра объема, который прошел через Curve. Хакер сгенерировал $500k торговых комиссий, которые были распределены среди тех, кто стейкал CRV. Трейдинг комиссии Curve выросли на 8000% так как хакер свапнул около $100 млн. в USDT и USDC.

У пулов Uniswap также был урожайный день благодаря неизвестному супер-фармеру. 92% объема прошло через пары USDT/ETH и USDC/ETH, сгенерировав $5.76 vky/ комиссий для предоставляющих ликвидности пользователей.

Благодаря этому объем торгов на Uniswap за 24 часа вырос с $148 млн. до $2 млрд., о чем мы писали.

Всем хорошего дня, подписывайтесь на наш Telegram и YouTube, чтобы ничего не пропустить.