Анализ рисков безопасности контрактов NFT: обзор событий первой половины 2022 года и ключевые моменты аудита

Анализ безопасности NFT-контрактов: обзор событий первой половины 2022 года и обсуждение распространенных проблем

В первой половине 2022 года в области NFT произошло множество инцидентов, связанных с безопасностью, что привело к огромным экономическим потерям. Согласно статистике, за полгода произошло 10 крупных инцидентов с безопасностью NFT, общие потери составили 64,9 миллиона долларов. Основные методы атак включали использование уязвимостей контрактов, утечку приватных ключей и фишинг. Стоит отметить, что фишинговые атаки на платформе Discord были особенно распространены, почти каждый день серверы подвергались атакам, что приводило к тому, что большое количество пользователей неосмотрительно нажимали на вредоносные ссылки и несли убытки.

Анализ инцидентов с безопасностью NFT за первое полугодие: какие типичные случаи стоит нам насторожить?

Анализ типичных инцидентов безопасности

Событие TreasureDAO

3 марта платформа обмена TreasureDAO подверглась атаке, в результате которой было украдено более 100 NFT. Проблема заключалась в функции buyItem контракта TreasureMarketplaceBuyer. Эта функция при расчете общей цены не проверяла тип токена и просто умножала количество на цену за единицу. Это позволило злоумышленнику вызвать функцию buyItem контракта TreasureMarketplace и купить токены, когда сумма платежа в ERC-20 токенах равнялась 0.

Основная причина заключается в логической путанице, вызванной смешиванием токенов ERC-1155 и ERC-721. Токены ERC-721 сами по себе не имеют концепции количества, но контракт использует количество для расчета цены покупки, и при окончательной передаче не было проведено логического разделения.

APE Coin воздушная акция

17 марта хакеры с помощью флеш-кредита получили более 60 000 монет APE Coin в рамкахairdrop. Проблема заключалась в контракте airdrop для GrapesToken. Контракт использовал alpha.balanceOf() и beta.balanceOf() для определения владения вызывающим BAYC/MAYC NFT, но этот метод позволяет получить только мгновенное состояние владения NFT, которое можно манипулировать с помощью флеш-кредита. Атакующие воспользовались этим уязвимостями, взяв в долг BAYC NFT через флеш-кредит и получив соответствующий airdrop.

Событие Revest Finance

27 марта проект Revest Finance подвергся атаке, убытки составили около 120 000 долларов США. Это典型ная атака повторного входа ERC-1155. Проблема заключалась в контракте Revest. Когда пользователь использует depositAdditionalToFNFT() для добавления активов в FNFT, контракт должен сначала уничтожить старый FNFT, а затем выпустить новый FNFT. Однако в процессе выпуска функция min() не проверяла, существует ли FNFT, который нужно выпустить, и переменная состояния fnftId увеличивалась после функции _mint(). В функции _min() присутствует скрытый внешний вызов ERC-1155 _doSafeTransferAcceptanceCheck(), что и стало причиной уязвимости повторного входа.

NBA хайп-скачка

21 апреля проект NBA подвергся атаке. Проблема заключалась в механизме проверки подписи контракта The_Association_Sales. Существуют два основных уязвимости в безопасности: подделка подписи и повторное использование подписи. Повторное использование подписи происходит из-за того, что контракт не хранит использованные подписи, что позволяет злоумышленнику многократно использовать одну и ту же подпись. Подделка подписи возникает из-за того, что параметр info в vData memory не проверяется на msg.sender во время передачи, что позволяет злоумышленнику подделывать подпись.

Событие Akutar

23 апреля проект NFT Akutar столкнулся с проблемой, когда контракт AkuAuction из-за уязвимости привел к блокировке 11539 ETH (около 34 миллионов долларов). В контракте были обнаружены две логические уязвимости:

  1. Функция возврата processRefunds использует функцию call для осуществления возврата, и результат возврата используется в качестве условия проверки require. Злоумышленник может злонамеренно вызвать revert в fallback, что приведет к невозможности выполнения операции возврата всего контракта.
  2. Условия проверки в функции возврата не учитывают возможность того, что пользователь может ставить на несколько NFT, что приводит к тому, что проектная сторона не может выполнить операции возврата в будущем.

XCarnival событие

24 июня протокол кредитования NFT XCarnival подвергся атаке, в результате которой хакеры заработали 3087 эфиров (около 3,8 миллиона долларов). Проблема заключалась в функции pledgeAndBorrow контракта XNFT. Эта функция не проверяла, находится ли переданный хакерами адрес xToken в белом списке проекта при залоге NFT, и не проверяла состояние записи залога при заимствовании, что позволило злоумышленникам многократно использовать недействительные записи залога для заимствования.

Анализ инцидентов с безопасностью NFT за первое полугодие: какие типичные случаи стоит нам остерегаться?

Часто задаваемые вопросы по аудиту NFT-контрактов

  1. Подделка и повторное использование подписей:

    • Данные подписи не содержат проверки на повторное выполнение, так как отсутствует nonce пользователя, что приводит к возможности повторного использования данных подписи для чеканки NFT.
    • Проверка подписи неадекватна, так как не проверяется случай, когда подписывающий является нулевым адресом, что позволяет любому пользователю проводить чек для минтинга.
  2. Логическая уязвимость:

    • Администраторы контрактов могут чеканить монеты особым способом без ограничения общего объема, что приводит к фактическому количеству NFT, превышающему ожидания.
    • Во время аукциона NFT победитель может использовать атаку с зависимостью от порядка транзакций для изменения цены ставки и получения NFT по низкой цене.
  3. ERC721/ERC1155 повторная атака:

    • Использование функции уведомления о переводе (функция onERC721Received) может привести к атаке повторного входа, когда контракт NFT вызывает целевой контракт.
  4. Слишком широкий объем полномочий:

    • При ставке или аукционе требуется авторизация _operatorApprovals, а не авторизация отдельного токена, что увеличивает риск кражи NFT.
  5. Манипуляция ценами:

    • Цена NFT зависит от объема токенов, удерживаемых по определенному контракту, и злоумышленники могут использовать флеш-кредиты для повышения цены токенов, что приводит к аномальной ликвидации заложенных NFT.

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

Анализ событий безопасности NFT за первое полугодие: какие типичные случаи стоит нам насторожить?

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Репост
  • Поделиться
комментарий
0/400
BrokeBeansvip
· 23ч назад
С контрактами снова проблемы, кто еще осмелится покупать?
Посмотреть ОригиналОтветить0
CryptoNomicsvip
· 23ч назад
*вздох* применяя анализ марковских цепей, эти взломы показывают 73,4% корреляция с плохим аудитом контрактов. статистически неизбежно.
Посмотреть ОригиналОтветить0
blockBoyvip
· 23ч назад
Цзэ, каждый день в уязвимостях.
Посмотреть ОригиналОтветить0
ILCollectorvip
· 23ч назад
Эх, несколько десятков миллионов долларов так просто испарились, мне действительно жаль братка, который сокращает потери.
Посмотреть ОригиналОтветить0
SorryRugPulledvip
· 23ч назад
Снова попался на удочку dc.
Посмотреть ОригиналОтветить0
GweiTooHighvip
· 23ч назад
Снова контракт был стянут, без конца и края.
Посмотреть ОригиналОтветить0
  • Закрепить