Аналіз ризиків безпеки контрактів 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 тисяч APE Coin у вигляді airdrop. Проблема полягала в контракті airdrop для AirdropGrapesToken. Контракт використовував 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. Основними ризиками безпеки є: підробка підпису та повторне використання підпису. Повторне використання підпису відбувається через те, що контракт не зберігав використані підписи, що дозволяє зловмиснику багаторазово використовувати один і той же підпис. Підробка підпису відбувається через те, що параметр vData memory info не проходить перевірку msg.sender під час передачі параметрів, що дозволяє підпису бути підробленим.

Подія Akutar

23 квітня контракт AkuAuction NFT проєкту Akutar через вразливість призвів до блокування 11539 ETH (близько 34 мільйонів доларів США). У контракті виявлено два логічні недоліки:

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

XCarnival подія

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

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

Поширені запитання щодо аудиту контрактів NFT

  1. Підробка та повторне використання підпису:

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

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

    • Використання функції сповіщення про переказ (функція onERC721Received) може призвести до атаки повторного входу, коли контракт NFT викликає контракт-ціль для переказу.
  4. Занадто великий обсяг повноважень:

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

    • Ціна NFT залежить від обсягу токенів, які утримуються у певному контракті, зловмисники можуть скористатися миттєвим кредитом для підвищення ціни токенів, що призведе до аномального ліквідації заставлених NFT.

У зв'язку з частими випадками безпеки контрактів NFT та тим, що виявлені під час аудиту уразливості часто відповідають фактичним атакам, пошук професійної безпекової компанії для проведення комплексного аудиту контрактів NFT стає особливо важливим.

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Репост
  • Поділіться
Прокоментувати
0/400
LayerHoppervip
· 2хв. тому
Знову dc постраждав, так страшно.
Переглянути оригіналвідповісти на0
BrokeBeansvip
· 08-13 15:21
Знову проблеми з контрактом, хто ще наважиться купувати?
Переглянути оригіналвідповісти на0
CryptoNomicsvip
· 08-13 15:20
*с sigh* застосування аналізу марковських ланцюгів, ці зломи показують 73.4% кореляцію з поганим аудитом контрактів. статистично неминуче.
Переглянути оригіналвідповісти на0
blockBoyvip
· 08-13 15:19
Ех, кожного дня є вразливість
Переглянути оригіналвідповісти на0
ILCollectorvip
· 08-13 15:17
Ай, кілька десятків мільйонів доларів так просто зникли, справді шкода старшого брата, який скорочує втрати.
Переглянути оригіналвідповісти на0
SorryRugPulledvip
· 08-13 15:17
Знову попався на фішинг від dc
Переглянути оригіналвідповісти на0
GweiTooHighvip
· 08-13 15:14
Знову контракт був обкрадений, безкінечно.
Переглянути оригіналвідповісти на0
  • Закріпити