Анализ безопасности NFT-контрактов: типичные события и распространенные проблемы
В первой половине 2022 года в области NFT произошло множество инцидентов с безопасностью, что привело к значительным экономическим потерям. Согласно данным мониторинговой платформы, в этот период произошло 10 основных инцидентов с безопасностью, общая сумма убытков составила около 6490 долларов США. Способы атак в основном включали эксплуатацию уязвимостей контрактов, утечку приватных ключей и фишинг. В то же время серверы Discord подвергались частым атакам, что привело к тому, что пользователи часто теряли деньги из-за нажатия на фишинговые ссылки.
Анализ типичных инцидентов безопасности
Событие TreasureDAO
3 марта 2022 года платформа обмена TreasureDAO была взломана, в результате чего было украдено более 100 NFT. Корень проблемы заключается в логической уязвимости контракта TreasureMarketplaceBuyer. В функции buyItem контракт не проверяет тип токена, а напрямую умножает _quantity на _pricePerItem для расчета totalPrice, что позволяет злоумышленнику покупать токены с платежом ERC-20 равным 0. Эта проблема вызвана логическим путаницей, возникшим из-за смешивания токенов ERC-1155 и ERC-721; у токенов ERC-721 изначально нет концепции количества, но контракт использует количество для расчета цены, и при реализации перевода не проводит логическое разделение.
Событие аэронавигации APE Coin
17 марта 2022 года хакеры получили более 60 000 APE Coin через Flash Loan. В контракте AirdropGrapesToken существовал логический недостаток, который использовал только alpha.balanceOf() и beta.balanceOf() для определения прав собственности вызывающего на BAYC/MAYC NFT. Этот метод позволяет получить лишь мгновенное состояние прав собственности пользователя на NFT, которое может быть манипулировано через Flash Loan. Злоумышленники использовали этот недостаток, взяв в Flash Loan BAYC NFT и получив соответствующий airdrop.
Событие Revest Finance
27 марта 2022 года Revest Finance подвергся хакерской атаке, в результате которой было потеряно около 120 000 долларов США. В контракте Revest имелась уязвимость повторного входа ERC-1155. Когда пользователь использует depositAdditionalToFNFT() для добавления активов в FNFT, контракт сначала должен уничтожить оригинальный FNFT, а затем создать новый FNFT. Однако функция min() не проверяла, существует ли уже создаваемый FNFT, и инкремент fnftId выполнялся после _mint(). Внешний вызов _doSafeTransferAcceptanceCheck() в _min() привел к уязвимости повторного входа.
NBA хау-янгмао 사건
21 апреля 2022 года проект NBA подвергся хакерской атаке. В контракте The_Association_Sales существуют две основные проблемы с использованием проверки подписи в белом списке: повторное использование подписи, из-за того что контракт не сохраняет использованные подписи, что позволяет злоумышленнику повторно их использовать; и подделка подписи, так как при передаче параметра info в параметре vData memory не проверяется msg.sender.
Событие Akutar
23 апреля 2022 года, контракт AkuAuction проекта Akutar из-за уязвимости смарт-контракта привел к блокировке 11539 ETH( на сумму около 34 миллионов долларов). В контракте обнаружены два логических уязвимости: первая заключается в том, что функция возврата processRefunds использует функцию call для возврата средств и использует результат в качестве условия для require, что позволяет злоумышленнику в fallback несанкционированно отклонять и тем самым блокировать возврат; вторая заключается в том, что условие в функции возврата не учитывает возможность того, что пользователь может делать ставки на несколько NFT, что делает невозможным выполнение последующих операций возврата.
Событие XCarnival
24 июня 2022 года, протокол кредитования NFT XCarnival был атакован, хакеры заработали 3087 эфиров на сумму около 3,8 миллиона долларов (. Функция pledgeAndBorrow контракта XNFT не проверяла, находится ли адрес xToken в белом списке при залоге NFT, и не проверяла статус залоговых записей при кредитовании, что позволило злоумышленникам многократно использовать недействительные залоговые записи для кредитования.
![Анализ событий безопасности NFT за первую половину года: какие типичные случаи заслуживают нашего внимания?])https://img-cdn.gateio.im/webp-social/moments-1888562fb8639d0fb586b639d3e5eb87.webp(
Часто задаваемые вопросы по аудиту NFT-контрактов
Подделка и повторное использование подписи:
Данные подписи не содержат проверки на повторное выполнение, можно повторно использовать данные подписи для чеканки NFT
Проверка подписи неразумна, любой пользователь может произвести чеканку через проверку
Логическая уязвимость:
Администратор может создавать монеты особым способом без ограничения общего объема, что приводит к фактическому количеству NFT, превышающему ожидания.
При аукционе NFT победитель может изменить цену ставки с помощью атаки по зависимостям от порядка сделок, чтобы получить NFT по низкой цене.
ERC721/ERC1155 повторная атака:
Использование функции уведомления о переводе может привести к атаке повторного входа, если контракт NFT отправляет вызов целевому контракту.
Слишком широкий объем полномочий:
Требуется авторизация _operatorApprovals при ставке или аукционе, что может привести к риску кражи NFT
Манипуляция ценами:
Цена NFT зависит от количества токенов определённого контракта, злоумышленники могут использовать кредитование под залог для искусственного завышения цены, что приводит к аномальной ликвидации заложенных NFT.
Учитывая частоту инцидентов с безопасностью NFT-контрактов и то, что распространенные уязвимости, выявленные в ходе аудита, часто используются на практике, крайне необходимо привлечь профессиональную безопасность для проведения всестороннего аудита NFT-контрактов.
![Анализ инцидентов с безопасностью NFT за первое полугодие: какие типичные случаи стоит нам насторожить?])https://img-cdn.gateio.im/webp-social/moments-d101c45ddd9b43f58f7f9c7919dd3918.webp(
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
9
Поделиться
комментарий
0/400
SerumDegen
· 07-26 15:03
еще один день, еще один взлом... классический web3, смх
Посмотреть ОригиналОтветить0
CompoundPersonality
· 07-26 10:33
Эти баги контрактов - настоящие бумажные тигры.
Посмотреть ОригиналОтветить0
BearMarketBuyer
· 07-26 08:12
новичок потерял пятьдесят тысяч
Посмотреть ОригиналОтветить0
DefiOldTrickster
· 07-25 07:36
Играл в эту сферу десять лет. Сколько неудачников я видел, которых разыгрывали как лохов. Разве они заслужили такие потери?
Посмотреть ОригиналОтветить0
TokenSleuth
· 07-23 15:36
С таковым количеством уязвимостей в контрактах, кто осмелится купить?
Посмотреть ОригиналОтветить0
pumpamentalist
· 07-23 15:36
Снова поймали рыбу.
Посмотреть ОригиналОтветить0
SelfCustodyBro
· 07-23 15:31
Как можно так плохо защитить, а потом еще и осмелиться выйти в сеть?
Анализ рисков безопасности NFT-контрактов: разбор 6 типичных событий и интерпретация 5 основных вопросов
Анализ безопасности NFT-контрактов: типичные события и распространенные проблемы
В первой половине 2022 года в области NFT произошло множество инцидентов с безопасностью, что привело к значительным экономическим потерям. Согласно данным мониторинговой платформы, в этот период произошло 10 основных инцидентов с безопасностью, общая сумма убытков составила около 6490 долларов США. Способы атак в основном включали эксплуатацию уязвимостей контрактов, утечку приватных ключей и фишинг. В то же время серверы Discord подвергались частым атакам, что привело к тому, что пользователи часто теряли деньги из-за нажатия на фишинговые ссылки.
Анализ типичных инцидентов безопасности
Событие TreasureDAO
3 марта 2022 года платформа обмена TreasureDAO была взломана, в результате чего было украдено более 100 NFT. Корень проблемы заключается в логической уязвимости контракта TreasureMarketplaceBuyer. В функции buyItem контракт не проверяет тип токена, а напрямую умножает _quantity на _pricePerItem для расчета totalPrice, что позволяет злоумышленнику покупать токены с платежом ERC-20 равным 0. Эта проблема вызвана логическим путаницей, возникшим из-за смешивания токенов ERC-1155 и ERC-721; у токенов ERC-721 изначально нет концепции количества, но контракт использует количество для расчета цены, и при реализации перевода не проводит логическое разделение.
Событие аэронавигации APE Coin
17 марта 2022 года хакеры получили более 60 000 APE Coin через Flash Loan. В контракте AirdropGrapesToken существовал логический недостаток, который использовал только alpha.balanceOf() и beta.balanceOf() для определения прав собственности вызывающего на BAYC/MAYC NFT. Этот метод позволяет получить лишь мгновенное состояние прав собственности пользователя на NFT, которое может быть манипулировано через Flash Loan. Злоумышленники использовали этот недостаток, взяв в Flash Loan BAYC NFT и получив соответствующий airdrop.
Событие Revest Finance
27 марта 2022 года Revest Finance подвергся хакерской атаке, в результате которой было потеряно около 120 000 долларов США. В контракте Revest имелась уязвимость повторного входа ERC-1155. Когда пользователь использует depositAdditionalToFNFT() для добавления активов в FNFT, контракт сначала должен уничтожить оригинальный FNFT, а затем создать новый FNFT. Однако функция min() не проверяла, существует ли уже создаваемый FNFT, и инкремент fnftId выполнялся после _mint(). Внешний вызов _doSafeTransferAcceptanceCheck() в _min() привел к уязвимости повторного входа.
NBA хау-янгмао 사건
21 апреля 2022 года проект NBA подвергся хакерской атаке. В контракте The_Association_Sales существуют две основные проблемы с использованием проверки подписи в белом списке: повторное использование подписи, из-за того что контракт не сохраняет использованные подписи, что позволяет злоумышленнику повторно их использовать; и подделка подписи, так как при передаче параметра info в параметре vData memory не проверяется msg.sender.
Событие Akutar
23 апреля 2022 года, контракт AkuAuction проекта Akutar из-за уязвимости смарт-контракта привел к блокировке 11539 ETH( на сумму около 34 миллионов долларов). В контракте обнаружены два логических уязвимости: первая заключается в том, что функция возврата processRefunds использует функцию call для возврата средств и использует результат в качестве условия для require, что позволяет злоумышленнику в fallback несанкционированно отклонять и тем самым блокировать возврат; вторая заключается в том, что условие в функции возврата не учитывает возможность того, что пользователь может делать ставки на несколько NFT, что делает невозможным выполнение последующих операций возврата.
Событие XCarnival
24 июня 2022 года, протокол кредитования NFT XCarnival был атакован, хакеры заработали 3087 эфиров на сумму около 3,8 миллиона долларов (. Функция pledgeAndBorrow контракта XNFT не проверяла, находится ли адрес xToken в белом списке при залоге NFT, и не проверяла статус залоговых записей при кредитовании, что позволило злоумышленникам многократно использовать недействительные залоговые записи для кредитования.
![Анализ событий безопасности NFT за первую половину года: какие типичные случаи заслуживают нашего внимания?])https://img-cdn.gateio.im/webp-social/moments-1888562fb8639d0fb586b639d3e5eb87.webp(
Часто задаваемые вопросы по аудиту NFT-контрактов
Подделка и повторное использование подписи:
Логическая уязвимость:
ERC721/ERC1155 повторная атака:
Слишком широкий объем полномочий:
Манипуляция ценами:
Учитывая частоту инцидентов с безопасностью NFT-контрактов и то, что распространенные уязвимости, выявленные в ходе аудита, часто используются на практике, крайне необходимо привлечь профессиональную безопасность для проведения всестороннего аудита NFT-контрактов.
![Анализ инцидентов с безопасностью NFT за первое полугодие: какие типичные случаи стоит нам насторожить?])https://img-cdn.gateio.im/webp-social/moments-d101c45ddd9b43f58f7f9c7919dd3918.webp(