NFT合約安全風險剖析:2022上半年事件回顧與審計要點

NFT合約安全分析:2022年上半年事件回顧與常見問題探討

2022年上半年,NFT領域安全事件頻發,造成了巨大的經濟損失。據統計,這半年內共發生10起重大NFT安全事件,總損失高達6490萬美元。攻擊手段主要包括合約漏洞利用、私鑰泄露和釣魚等。值得注意的是,Discord平台上的釣魚攻擊尤爲猖獗,幾乎每天都有服務器遭受攻擊,導致大量用戶因點擊惡意連結而蒙受損失。

上半年NFT安全事件分析:哪些典型案列值得我們警惕?

典型安全事件分析

TreasureDAO事件

3月3日,TreasureDAO交易平台遭遇攻擊,超過100個NFT被盜。問題出在TreasureMarketplaceBuyer合約的buyItem函數上。該函數在計算總價時未對代幣類型進行判斷,直接將數量與單價相乘。這導致攻擊者可以在ERC-20代幣支付額爲0的情況下,調用TreasureMarketplace合約的buyItem函數購買代幣。

根本原因是ERC-1155和ERC-721代幣混用引發的邏輯混亂。ERC-721代幣本身沒有數量概念,但合約卻用數量計算購買價格,且在最終轉帳實現中未進行邏輯分離。

APE Coin空投事件

3月17日,黑客通過閃電貸獲取了超過6萬枚APE Coin空投。問題出在AirdropGrapesToken空投合約上。合約使用alpha.balanceOf()和beta.balanceOf()判斷調用者對BAYC/MAYC NFT的所有權,但這種方式只能獲取用戶對NFT所有權的瞬時狀態,而這個狀態可以通過閃電貸操縱。攻擊者正是利用這一漏洞,通過閃電貸借入BAYC NFT並獲取相應空投。

Revest Finance事件

3月27日,Revest Finance項目遭受攻擊,損失約12萬美元。這是一起典型的ERC-1155重入攻擊。問題出在Revest合約中。當用戶使用depositAdditionalToFNFT()追加FNFT抵押資產時,合約需要先銷毀舊FNFT,再鑄造新FNFT。然而,鑄造過程中min()函數未檢查需鑄造的FNFT是否已存在,且fnftId狀態變量自增在_mint()函數之後。而_min()中存在ERC-1155的隱藏外部調用_doSafeTransferAcceptanceCheck(),這就造成了重入漏洞。

NBA薅羊毛事件

4月21日,NBA項目遭遇攻擊。問題出在The_Association_Sales合約的籤名驗證機制上。主要存在兩個安全隱患:籤名冒用和籤名復用。籤名復用是因爲合約未存儲已使用的籤名,導致攻擊者可多次重復使用同一籤名。籤名冒用則是因爲vData memory參數info在傳參時未進行msg.sender校驗,使得籤名可被冒用。

Akutar事件

4月23日,NFT項目Akutar的AkuAuction合約因漏洞導致11539ETH(約3400萬美元)被鎖死。合約存在兩個邏輯漏洞:

  1. 退款函數processRefunds使用call函數進行退款,並將退款結果作爲require判定條件。攻擊者可在fallback中惡意revert,導致整個合約退款操作無法進行。
  2. 退款函數中的兩個判斷條件未考慮用戶可投標多個NFT的情況,導致項目方後續退款操作永遠無法執行。

XCarnival事件

6月24日,NFT借貸協議XCarnival遭攻擊,黑客獲利3087枚以太坊(約380萬美元)。問題出在XNFT合約的pledgeAndBorrow函數上。該函數在質押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 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 轉發
  • 分享
留言
0/400
破产豆豆vip
· 22小時前
合约又出事咯 谁还敢买啊
回復0
CryptoNomicsvip
· 22小時前
*sigh* 应用马尔科夫链分析,这些黑客与糟糕的合同审计显示出73.4% 相关性。统计上不可避免。
查看原文回復0
blockBoyvip
· 22小時前
啧 天天都在漏洞
回復0
无常亏损收藏家vip
· 22小時前
唉 几千万刀就这么蒸发了 真替割肉的老哥心疼
回復0
SorryRugPulledvip
· 22小時前
又被dc钓鱼干烂了
回復0
GweiTooHighvip
· 22小時前
又见合约被薅 没完没了了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)