Увидел, что босс onekey защищает свои права в Resupply, потерял несколько миллионов активов, и задумался, что DeFi действительно слишком хрупок. Посмотрел вокруг, кажется, никто не объяснил, как именно хакер атаковал, поэтому я сам провел небольшое исследование и делюсь с вами:
Главный герой истории - ResupplyPair, пользователи могут занимать активы, ставя их в залог, модификатор isSolvent в контракте отвечает за проверку, имеет ли пользователь право запрашивать заимствованные активы, конкретная логика кода такова:
Можно увидеть, что на 282 строке происходит расчет ltv, если у нас есть способ установить _exchangeRate равным 0, то проверка всегда будет выполнена? Продолжаем читать код:
Можно увидеть, что это значение переменной получается из вызова оракула getPrices, и является знаменателем, другими словами, нам нужно сделать цену залога максимально высокой.
Изучив код оракула, можно понять, что getPrices - это всего лишь уровень пересылки, фактически он вызывает интерфейс convertToAssets этого залогового актива (то есть казначейства). Продолжаем читать код:
Можно увидеть, что этот результат состоит из очень сложных математических операций, здесь хакер увеличил числитель, а затем total_assets, завершив атаку, проверив реализацию функции _total_assets, можно обнаружить:
Это значение связано с borrowed_token, который контроллер этого казначейства держит, то есть crvUSD.
На этом этапе анализ становится ясным, при создании ResupplyPair использовалось пустое казначейство, хакер перевел определенное количество borrowed_token на контроллер казначейства, в конечном итоге сделав _exchangeRate равным нулю, что позволило ему увеличить стоимость своих залоговых активов до бесконечности, заимствовав до 10 миллионов reUSD с минимальными затратами.
Торговая сделка атаки:
Адрес контракта ResupplyPair:
Адрес контракта контроллера казначейства:
Адрес контракта казначейства:
Адрес контракта оракула:
Показать оригинал



68,34 тыс.
307
Содержание этой страницы предоставляется третьими сторонами. OKX не является автором цитируемых статей и не имеет на них авторских прав, если не указано иное. Материалы предоставляются исключительно в информационных целях и не отражают мнения OKX. Материалы не являются инвестиционным советом и призывом к покупке или продаже цифровых активов. Раздел использует ИИ для создания обзоров и кратких содержаний предоставленных материалов. Обратите внимание, что информация, сгенерированная ИИ, может быть неточной и непоследовательной. Для получения полной информации изучите соответствующую оригинальную статью. OKX не несет ответственности за материалы, содержащиеся на сторонних сайтах. Цифровые активы, в том числе стейблкоины и NFT, подвержены высокому риску, а их стоимость может сильно колебаться. Перед торговлей и покупкой цифровых активов оцените ваше финансовое состояние и принимайте только взвешенные решения.