Недавно была история с украденным CryptoPunk, показала одну из самых опасных вещей в NFT approvals
Чел закрыл loan(займ) на 28 ETH и вернул себе Punk #5032
Через 3 блока NFT украли.
➖Без взлома кошелька.
➖Без кражи seed-фразы.
➖Без новой подписи.
Как это вообще возможно?
Проблема была в старом approval.
Ранее пользователь дал разрешение контракту Gondi PurchaseBundler:(это вспомогательный смарт-контракт платформы Gondi, который автоматизировал сложные операции с NFT в одну транзакцию)
setApprovalForAll(contract, true)
То есть:
“Этот контракт может двигать мои NFT”
Сам PurchaseBundler использовался для удобной покупки NFT:
*️⃣swap
*️⃣ marketplace buy
*️⃣ loan
*️⃣bundle execution
Но внутри контракта была dangerous логика.
Функция swapAndExecute() позволяла:
• вызвать внешний target contract
• передать arbitrary calldata
И среди whitelist target’ов был Wrapped Cryptopunks.
Атакер просто подсунул raw calldata: (через calldata контракт понимает: какую функцию вызвать и с какими параметрами)
transferFrom(victim, attacker, punkId)
И NFT-контракт увидел:
caller = approved operator
После чего спокойно перевёл Punk атакеру.
❗️Главное, что важно понять
Approval в NFT - это НЕ:
“разрешение на одну покупку”
Approval - это:
“этому контракту можно двигать мои NFT”
И если внутри approved-контракта находят новый execution path (какую цепочку действий может выполнить контракт) - ваши NFT могут украсть даже спустя месяцы.
Потому что они часто умеют делать arbitrary external calls.
Самая опасная комбинация в NFTfi:
\text{Open Approval} + \text{Arbitrary Execution Path} = \text{NFT Theft Risk}
После инцидента:
*️⃣Wrapped Cryptopunks убрали из whitelist
*️⃣ PurchaseBundler поставили на pause
*️⃣ exploit path закрыли
Но approvals у пользователей оставались активными, пока они сами не сделали revoke.
❗️И да - это касается не только панков.
Теоретически подобная схема может затронуть ЛЮБОЙ ERC-721 NFT, если:
➖approval открыт
➖контракт имеет dangerous execution logic
➖найден exploit path
Именно поэтому revoke approvals - это не паранойя, а не поленитесь и сделайте ревоке NFT коллекций что для Вас важны
🐵 ВСЕ ССЫЛКИ CRYPTO MONKEYS
🐳 СТАНЬ MONKEYS ЭЛИТОЙ