BTC 96377.8$
ETH 1835.39$
Tether (USDT) 1$
Toncoin (TON) 3.19$
telegram vk
telegram vk Х
Russian English
"

Как у Chibi Finance «выдернули» миллион долларов

Дата публикации:04.07.2023, 19:39
1934
1934
Поделись с друзьями!

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

26 июня пресловутое «выдергивание коврика» (rug pull) было произведено в отношении агрегатора децентрализованных финансов (DeFi) Chibi Finance, и из его контрактов была украдена криптовалюта на сумму 1 миллион долларов. Официальный пользовательский интерфейс протокола был удален, что привело к ошибке 404, и все социальные сети для приложения были отключены. После того, как средства были слиты, они были обменены на Wrapped Ether (WETH) и перемещены в Ethereum, откуда злоумышленник впоследствии отправил их в Tornado Cash (TORN).
Когда об этом стало известно, цена токена управления Chibi Finance (CHIBI) упала более чем на 90 %.


Рисунок 1. Цена токена CHIBI. Источник: CoinGecko.

Но ведь в DeFi не должно быть возможности «выдергивать коврик»! В конце концов, эти приложения по определению не работают в централизованной инфраструктуре. Таким образом, создатель приложения не должен иметь возможности сбежать со всеми криптовалютами или наличными.

По этой причине может быть полезно проанализировать, как была осуществлена эта конкретная афера.

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

Приложение Chibi Finance

До того, как его пользовательский интерфейс отключился, Chibi называл себя «самым популярным агрегатором доходности на Arbitrum», утверждая, что позволяет пользователям получать доход от всей экосистемы Arbitrum (ARB).

Согласно CertiK, совокупная заблокированная стоимость (TVL) агрегатора DeFi растет с момента его запуска в апреле. 21 июня Chibi объявила, что получила 500 000 долларов в TVL. В то время команда поставила цель достичь TVL в 1 миллион долларов.

26 июня приложение впервые появилось на CoinGecko, что сделало его более заметным. Похоже, что Chibi достиг своей цели в 1 миллион долларов вскоре после этого события… и прямо перед тем, как токены были слиты из его контрактов. В результате инвесторы потеряли криптовалюту на сумму более 1 миллиона долларов в результате атаки или мошенничества.

Контракты Chibi Finance

Атака использовала лазейку в восьми различных контрактах протокола Chibi Finance. Эти контракты были разветвлены из других проектов и не были уникальными для Chibi. Например, одним из них был StrategyAave.sol по адресу Arbitrum 0x45E8a9BA6Fcd612a30ae186F3Cc93d78Be3E7d8d, который также был развернут на нескольких других адресах в Abitrum, Ethereum, BNB Smart Chain и других сетях.

Другой пример — контракт StrategySushiSwap.sol по адресу 0x9458Ea03af408cED1d919C8866a97FB35D06Aae0. Он также имеет несколько версий в Arbitrum и других сетях.

Эти контракты обычно используются и в других приложениях-агрегаторах DeFi, не только в Chibi Finance.

Функция паники

Данные блокчейна показывают, что некоторые из контрактов, используемых Chibi Finance, содержат функцию «паники», которую можно использовать для вывода всех токенов из пула и отправки их на определенный адрес. Эта функция была важна для метода злоумышленника. Вот объяснение того, как это работает, на примере StrategySushiSwap.sol:

В строках 340–343 файла StrategySushiSwap.sol указано, что при вызове функции panic() она вызовет вторую функцию с именем «emergencyWithdraw» в контракте ISushiStake.


Рисунок 2. Функция panic() в контракте StrategySushiSwap.sol. Источник: Blockchain data.

Контракт ISushiStake, в свою очередь, является всего лишь интерфейсом. Он не содержит исполняемого кода. Вместо этого он указывает на контракт SushiSwap: MiniChefV2 по адресу 0xF4d73326C13a4Fc5FD7A064217e12780e9Bd62c3.

Адрес MiniChefV2 указан как официальный контракт децентрализованной биржи SushiSwap. Таким образом, функция «паники» вызывает функцию «emergencyWithdraw» в SushiSwap.

По адресу SushiSwap функцию EmergencyWithdraw можно увидеть в строках 626–643.


Рисунок 3. Функция экстренного вывода SushiSwap MiniChefV2. Источник: Blockchain data.

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

Функция EmergencyWithdraw имеет отказоустойчивость для предотвращения использования посторонними лицами. В строке 360 указано: «Пользователь хранилища UserInfo = userInfo[pid][msg.sender]», что означает, что «пользователь» определяется как отправитель сообщения. При нормальных обстоятельствах это должно позволять пользователю в экстренном порядке снимать собственные средства, но не средства, принадлежащие кому-либо еще.

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

Например, когда пользователь вносил средства с помощью Chibi Finance, его криптовалюта была отправлена в SushiSwap по контракту StrategySushiSwap, а не конечным пользователем напрямую. Это означало, что приложение Chibi Finance распознавалось как «пользователь» при попытке экстренного снятия средств. Это, в свою очередь, позволило Chibi выводить средства пользователей от их имени.

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

К сожалению, функция паники не имеет этого требования. Вместо этого она просто указана в контракте Chibi Finance как функция «onlyGov», что означает, что ее может вызывать администратор, но никто другой. Злоумышленник использовал на эту лазейку, чтобы осуществить свою атаку.

Как проводилась атака на Chibi Finance

Согласно отчету CertiK, пользователь Ethereum Shadowout.eth вывел 10  ETH из Tornado Cash 15 июня. Эти средства были переведены в Arbitrum (ARB), и от этого пользователя было отправлено 0,2 ETH на адрес 0x80c1ca8f002744a3b22ac5ba6ffc4dc0deda58e3. Эта вторая учетная запись создала вредоносный контракт 23 июня по адресу 0xb61222189b240be3da072898eda7db58b00fd6ee.

23 июня злоумышленник восемь раз вызывал функцию «добавить пул» в этом вредоносном контракте. Поскольку контракт не проверен, код этой функции «добавить пул» неизвестен. Однако CertiK предположил, что каждая из этих транзакций могла добавить контракт Chibi Finance в список данных вредоносного контракта, всего восемь контрактов в списке.

27 июня учетная запись развертывателя для Chibi Finance передала права администратора восьми контрактов Chibi Finance вредоносному контракту. Это было сделано с помощью восьми отдельных транзакций, каждая из которых вызывала функцию «setGov» для конкретного контракта.


Рисунок 4. Изменение права администратора для одного из контрактов Chibi Finance. Источник: Blockchain data.

После того, как вредоносный контракт получил эти права управления, его создатель назвал его «выполнением» функции. Это вызвало «панику» для каждого из восьми контрактов, что, в свою очередь, вызвало «emergencyWithdraw» для связанных пулов в приложениях DeFi, таких как SushiSwap, Aave и Global Hectare.

В результате все средства, внесенные пользователями в эти пулы через Chibi Finance, были выведены злоумышленником, что привело к убыткам инвесторов на сумму более 1 миллиона долларов.

Как избежать «выдергивания коврика» в стиле Chibi Finance?

Учитывая, что атака основывалась на функции «паники», которая позволяла администратору сливать все средства пользователей, один из способов избежать краха в стиле Chibi Finance — просто не использовать приложения, в которых есть эта функция.

С другой стороны, если у агрегатора нет функции «паники», существует риск того, что средства пользователя могут застрять, если в приложении-агрегаторе будет обнаружена ошибка или эксплойт. Пользователи могут захотеть рассмотреть эти компромиссы, если они решат использовать приложения-агрегаторы вместо прямого взаимодействия с базовыми пулами.

Нужно также учесть, что код смарт-контракта может быть чрезвычайно сложным, и большинство пользователей не смогут самостоятельно определить, есть ли в приложении уязвимость в безопасности. Как утверждает CertiK в своем отчете:

«Инцидент с Chibi Finance демонстрирует риски, связанные с централизацией в пространстве Web3.[...] Нереалистично ожидать, что обычные инвесторы смогут обнаружить и понять риски централизации в таких проектах, как Chibi Finance, просто проведя собственное исследование».

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

Chibi Finance заявила, что ее проверила компания SolidProof, занимающаяся безопасностью блокчейнов. Содержание предполагаемого аудита больше недоступно, поскольку GitHub проекта был закрыт и никогда не сохранялся в интернет-архивах. Не удается определить, были ли риски, связанные с функцией «паники», раскрыты в аудиторском отчете или даже имела ли место сама проверка.

«Выдергивание коврика» стало распространенной проблемой в пространстве DeFi. 1 июня компания Beosin, занимающаяся безопасностью блокчейнов, сообщила, что в мае из-за махинаций было потеряно более 45 миллионов долларов, что превышает другие эксплойты DeFi. 

Подписывайся на наш Telegram канал. Не трать время на мониторинг новостей. Только срочные и важные новости

https://t.me/block_chain24