Аналіз безпеки NFT-контрактів: типовi події та поширені проблеми
У першій половині 2022 року у сфері NFT сталося багато інцидентів безпеки, що призвели до значних економічних втрат. За даними платформи моніторингу, за цей період сталося 10 основних інцидентів безпеки, загальні збитки склали близько 64,9 мільйона доларів США. Основні способи атак включали експлуатацію вразливостей контрактів, витік приватних ключів та фішинг. Одночасно сервери Discord зазнавали частих атак, що призводило до того, що особисті користувачі зазнавали втрат через натискання на фішингові посилання.
Аналіз типових безпекових інцидентів
Подія ### TreasureDAO
3 березня 2022 року платформа обміну TreasureDAO була зламано хакерами, що призвело до викрадення понад 100 NFT. Причина інциденту полягає в логічній вразливості контракту TreasureMarketplaceBuyer. У функції buyItem контракт не перевіряє тип токена, а безпосередньо множить _quantity на _pricePerItem для обчислення totalPrice, що дозволяє зловмисникам купувати токени при нульовій сумі платежу в токенах ERC-20. Ця проблема виникла через логічну плутанину, викликану змішаним використанням токенів ERC-1155 і ERC-721; токени ERC-721 не мають концепції кількості, але контракт використовує кількість для обчислення ціни, і в реалізації передачі не було проведено логічного розділення.
подія аірдропу APE Coin
17 березня 2022 року, хакери через闪电贷 отримали понад 60 000 APE Coin airdrop. У контракті airdropGrapesToken існує логічна вразливість, що дозволяє використовувати лише alpha.balanceOf() та beta.balanceOf() для визначення власності викликувача на BAYC/MAYC NFT. Цей метод може лише отримати миттєвий стан власності користувача на NFT, який може бути контрольований через闪电贷. Атакуючи цю вразливість, зловмисник позичив BAYC NFT через闪电贷 і отримав відповідний airdrop.
Захід Revest Finance
27 березня 2022 року Revest Finance зазнав хакерської атаки, внаслідок якої було втрачено приблизно 120 тисяч доларів США. У контракті Revest існує вразливість повторного входу ERC-1155. Коли користувач використовує depositAdditionalToFNFT() для додавання застави FNFT, контракт спочатку повинен знищити оригінальний FNFT, а потім випустити новий FNFT. Проте функція min() не перевіряє, чи існує вже FNFT, що підлягає випуску, і сам процес збільшення fnftId виконується після _mint(). Зовнішній виклик _doSafeTransferAcceptanceCheck() у _min() призводить до вразливості повторного входу.
НБА хакерство
21 квітня 2022 року проект NBA став жертвою хакерської атаки. У контракті The_Association_Sales були виявлені дві основні проблеми при використанні підписів для верифікації білого списку: підписна повторна використання, оскільки контракт не зберігав вже використані підписи, що дозволяло зловмисникам повторно їх використовувати; підписне шахрайство сталося через те, що параметр info пам'яті vData не перевіряв msg.sender під час передачі.
Подія Akutar
23 квітня 2022 року контракт AkuAuction проекту Akutar через вразливість смарт-контракту призвів до блокування 11539 ETH(, що становить близько 34 мільйонів доларів США). У контракті є два логічні недоліки: по-перше, функція повернення коштів processRefunds використовує функцію call для повернення коштів і використовує результат як умову для require, зловмисник може в fallback свідомо revert, щоб завадити поверненню; по-друге, умова в функції повернення не враховує, що користувач може робити ставки на кілька NFT, що унеможливлює подальші операції повернення.
Подія XCarnival
24 червня 2022 року, протокол кредитування NFT XCarnival зазнав атаки, хакери отримали 3087 ефірів ( на суму близько 3,8 мільйона доларів ). Функція pledgeAndBorrow контракту XNFT при заставі NFT не перевіряла, чи адреса xToken є в білому списку, а також під час кредитування не перевіряла статус застави, що дозволило зловмисникам повторно використовувати недійсні записи застави для кредитування.
Поширені запитання щодо аудиту контрактів NFT
Підробка та повторне використання підпису:
Дані підпису не містять перевірки на повторне виконання, що дозволяє повторно використовувати дані підпису для карбування NFT
Перевірка підпису є неналежною, будь-який користувач може здійснити карбування через перевірку
Логічна помилка:
Адміністратори можуть карбувати монети особливим способом без обмеження загальної кількості, що призводить до фактичного обсягу NFT, що перевищує очікування.
Під час аукціону NFT, переможець може змінити ціну ставки за допомогою атаки на залежність від порядку транзакцій, отримуючи NFT за низькою ціною.
Атака повторного входу ERC721/ERC1155:
Використання функції сповіщення про переказ, виклик контракту NFT до цільового контракту може призвести до атаки повторного входу.
Занадто широкий обсяг повноважень:
Під час стейкінгу або аукціону вимагайте авторизацію _operatorApprovals, що може призвести до ризику викрадення NFT
Маніпуляція цінами:
Ціна NFT залежить від кількості токенів в певному контракті, зловмисник може використовувати闪电贷 для підвищення ціни, що призведе до аномальної ліквідації заставлених NFT.
Враховуючи часті випадки безпеки контрактів NFT, а також те, що поширені вразливості під час аудиту часто використовуються на практиці, пошук професійної безпекової компанії для проведення комплексного аудиту контрактів NFT є вкрай необхідним.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією 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-контрактів: типовi події та поширені проблеми
У першій половині 2022 року у сфері NFT сталося багато інцидентів безпеки, що призвели до значних економічних втрат. За даними платформи моніторингу, за цей період сталося 10 основних інцидентів безпеки, загальні збитки склали близько 64,9 мільйона доларів США. Основні способи атак включали експлуатацію вразливостей контрактів, витік приватних ключів та фішинг. Одночасно сервери Discord зазнавали частих атак, що призводило до того, що особисті користувачі зазнавали втрат через натискання на фішингові посилання.
Аналіз типових безпекових інцидентів
Подія ### TreasureDAO
3 березня 2022 року платформа обміну TreasureDAO була зламано хакерами, що призвело до викрадення понад 100 NFT. Причина інциденту полягає в логічній вразливості контракту TreasureMarketplaceBuyer. У функції buyItem контракт не перевіряє тип токена, а безпосередньо множить _quantity на _pricePerItem для обчислення totalPrice, що дозволяє зловмисникам купувати токени при нульовій сумі платежу в токенах ERC-20. Ця проблема виникла через логічну плутанину, викликану змішаним використанням токенів ERC-1155 і ERC-721; токени ERC-721 не мають концепції кількості, але контракт використовує кількість для обчислення ціни, і в реалізації передачі не було проведено логічного розділення.
подія аірдропу APE Coin
17 березня 2022 року, хакери через闪电贷 отримали понад 60 000 APE Coin airdrop. У контракті airdropGrapesToken існує логічна вразливість, що дозволяє використовувати лише alpha.balanceOf() та beta.balanceOf() для визначення власності викликувача на BAYC/MAYC NFT. Цей метод може лише отримати миттєвий стан власності користувача на NFT, який може бути контрольований через闪电贷. Атакуючи цю вразливість, зловмисник позичив BAYC NFT через闪电贷 і отримав відповідний airdrop.
Захід Revest Finance
27 березня 2022 року Revest Finance зазнав хакерської атаки, внаслідок якої було втрачено приблизно 120 тисяч доларів США. У контракті Revest існує вразливість повторного входу ERC-1155. Коли користувач використовує depositAdditionalToFNFT() для додавання застави FNFT, контракт спочатку повинен знищити оригінальний FNFT, а потім випустити новий FNFT. Проте функція min() не перевіряє, чи існує вже FNFT, що підлягає випуску, і сам процес збільшення fnftId виконується після _mint(). Зовнішній виклик _doSafeTransferAcceptanceCheck() у _min() призводить до вразливості повторного входу.
НБА хакерство
21 квітня 2022 року проект NBA став жертвою хакерської атаки. У контракті The_Association_Sales були виявлені дві основні проблеми при використанні підписів для верифікації білого списку: підписна повторна використання, оскільки контракт не зберігав вже використані підписи, що дозволяло зловмисникам повторно їх використовувати; підписне шахрайство сталося через те, що параметр info пам'яті vData не перевіряв msg.sender під час передачі.
Подія Akutar
23 квітня 2022 року контракт AkuAuction проекту Akutar через вразливість смарт-контракту призвів до блокування 11539 ETH(, що становить близько 34 мільйонів доларів США). У контракті є два логічні недоліки: по-перше, функція повернення коштів processRefunds використовує функцію call для повернення коштів і використовує результат як умову для require, зловмисник може в fallback свідомо revert, щоб завадити поверненню; по-друге, умова в функції повернення не враховує, що користувач може робити ставки на кілька NFT, що унеможливлює подальші операції повернення.
Подія XCarnival
24 червня 2022 року, протокол кредитування NFT XCarnival зазнав атаки, хакери отримали 3087 ефірів ( на суму близько 3,8 мільйона доларів ). Функція pledgeAndBorrow контракту XNFT при заставі NFT не перевіряла, чи адреса xToken є в білому списку, а також під час кредитування не перевіряла статус застави, що дозволило зловмисникам повторно використовувати недійсні записи застави для кредитування.
Поширені запитання щодо аудиту контрактів NFT
Підробка та повторне використання підпису:
Логічна помилка:
Атака повторного входу ERC721/ERC1155:
Занадто широкий обсяг повноважень:
Маніпуляція цінами:
Враховуючи часті випадки безпеки контрактів NFT, а також те, що поширені вразливості під час аудиту часто використовуються на практиці, пошук професійної безпекової компанії для проведення комплексного аудиту контрактів NFT є вкрай необхідним.