Раскрываем схему, с помощью которой хакер манипулировал обеспечением для займа криптовалюты

Что произошло при взломе MIM. Детально разбираем атаку

31.03.2025

699

6 мин

25 марта 2025 года был взломан протокол кредитования MIM (Magic Internet Money). Злоумышленнику удалось вывести 6261,13 ETH (эквивалент $12,9 млн). Для проведения атаки хакер использовал уязвимости в интеграции контрактов RouterOrder и Cauldron.

Источник: X аккаунт MIM Spell

Простым языком: атакующему удалось занять криптовалюту, ликвидировать позицию и произвести новый займ с первоначальным залогом. Этого удалось достичь благодаря тому, что в процессе ликвидации не обновлялись данные в контракте RouterOrder.

Пример атакующих транзакций

Для атаки на MIM были проведены три транзакции-эксплоита. Первая транзакция была подготовительной:
0xef64da328604bca1aee4b86504dbd2f81cc0f5d7d1b80bdca7011e470c076e0e
Вторая транзакция инициировала займ
0xcdfce7234225e445f764399407f1256c52f8b75db3baf77493bb4c88c8aacfd1
Вторая транзакция инициировала займ
0xcdfce7234225e445f764399407f1256c52f8b75db3baf77493bb4c88c8aacfd1
Третья транзакция инициировала ликвидацию и новый займ
0x5416a5f23af22bd1c6c92dbbdb382da681884ed2be07f5c0903ab2241
Для атаки были использованы два кошелька и контракт:
0x51c9d0264d829a4F6d525dF2357Cd20Ea79b5049
0xAF9e33Aa03CAaa613c3Ba4221f7EA3eE2AC38649
0xf29120acd274a0c60a181a37b1ae9119fe0f1c9c

Подготовка

На этом этапе хакер установил главный контракт для адреса 0x51c9 и внес 0,5 GM в DegenBox.

Первый займ

Далее злоумышленник вызвал функцию GmxV2CauldronV4.cook() с параметрами [30,5,30,3]. Это привело к следующим действиям:

  • 280 ETH были обменены на 6,66 WBTC по контракту атаки 0xf291
  • займ 300 тыс. MIM
  • передача 300 тыс. MIM во вредоносный контракт 0xf291
  • своп MIM на 300 тыс. USDC
  • своп 300 тыс. USDC на 145,2 WETH
  • своп 145,2 WETH на 3,44 WBTC

Затем злоумышленник создал новый ордер на 0x51c9 с использованием 5 WBTC в качестве залога и небольшой комиссии ETH. На этом этапе протокол MIM уже был скомпрометирован и не смог распознать манипуляцию.

Ликвидация и последующий займ без обеспечения

С помощью заранее созданного контракта атаки злоумышленник инициировал ликвидацию первого займа с использованием функции sendValueInCollateral(). Все средства были отправлены для ликвидации на ложный контракт 0xf291.

Далее были проведены еще несколько займов, которые протокол MIM одобрял, используя в качестве залога те самые 5 WBTC, внесенные злоумышленником на прошлом шаге.

Суть уязвимости

Изучив документацию Abracadabra станет понятно, что уязвимость заключается в совместном использовании контрактов RouterOrder и CauldronV4.

Функция OrderAgent.create() создает новую заявку на займ для определенного пользователя с заданными параметрами. Она вызывается контрактом GmxV2CauldronV4 для настройки новой заявки в ответ на действия пользователя. RouterOrder.init() также запускает создание заявки на маршрутизаторе GMX.

В процессе ликвидации займа функция 'sendValueInCollateral()' отправляет все средства ликвидатору, в данном случае атакующему контракту 0xf291, но публичная переменная 'inputAmount', хранящаяся в 'GmxV2CauldronRouterOrder', не обновляется. Это позволяет злоумышленнику далее использовать средства, находящиеся в залоге. В итоге хакер может занимать дополнительные 85% от размера обеспечения.

Следуем за деньгами

Два кошелька и контракт, созданные злоумышленником накануне атаки, получили первоначальное обеспечение в ETH от Tornado Cash. После вывода средств с протокола MIM они были перемещены на адрес 0xAF9e.

Перевод ETH из сети Arbitrum в Ethereum

Затем похищенная криптовалюта была переведена из сети Arbitrum в Ethereum с помощью протокола Stargate. Хакер использовал транзакции по 500 ETH. В сети Ethereum злоумышленник создал три новых адреса, на которых распределил похищенные средства:

0xa8f822E937C982e65b0437Ac81792a3AdA76A1ff — 1259 ETH ($2,6 млн)

0x047C2a3dd1Ab4105B365685d4804fE5c440B5729 — 2001 ETH ($4,1 млн)

0x018182FD7B856AeE1606D7E0AA8bca10F1Cb0b5d — 3001 ETH ($6,1 млн)

По состоянию на 31 марта похищенные средства остаются на кошельках злоумышленника.

Подписывайтесь на Getblock Magazine и будьте всегда в курсе последних новостей из мира криптовалют и цифровой экономики