ccryptoo 1 1650536047
新聞

NBA NFT 合約出包!非白名單利用漏洞搶鑄造,部分白單用戶沒得 Mint

國家籃球協會 NBA 於週三開放鑄造的 NFT 項目 The Association,因為合約出現漏洞,導致許多無白名單的用戶透過該漏洞大量鑄造,讓許多具有白名單的用戶鑄造失敗,損失手續費。
(前情提要:NBA官方推出季後賽「動態」NFT,將依選手球場表現數據自行變化外觀 

 

 國國家籃球協會 NBA 的 NFT 項目 The Association 於昨日開放鑄造,讓早期進入 NBA Discord 並擁有白名單的用戶免費鑄造(只需 Gas)。豈料,在鑄造階段中,因為智能合約出現漏洞,導致許多無白名單資格的用戶在此期間大量鑄造,讓原先具白名單資格的用戶無法順利鑄造 NFT

對此,知名 NFT 項目 Azuki 的開發人員 Cygaar 就在隨後,於推特上發文講述 NBA NFT 智能合約的漏洞,不僅指出無白名單者是如何調用合約,還給出幾點提醒,呼籲項目方以後要多用點心。

Cygaar 指出,欲利用此合約漏洞,只需將數據發送到尚未鑄造錢包上的合約地址,這一步驟,即便沒有白名單資格也可進行操作。

若將下列數據反編譯,會看到它調用的函數是 mint_approved,info 中的參數則是用來判斷交易是否是由鑄造網站簽名,與錢包地址是否在白名單內。不過,這部分缺少了一個關鍵組成,那就是沒有去檢查
info.from == msg.sender.

Cygaar 指出,這代表只要一個有效的簽名就可以無限循環,同樣的簽名能被任意重複使用。

雖然一個錢包僅能鑄造一次,但創建新錢包相當容易,還可以透過合約來循環此動作。

Cygaar 另外還提出一個巨大的錯誤,即合約沒有檢查交易是否來自用戶。Cygaar 指出,不知道在這部分已經提醒多少次了,因為在這部分,僅需再添加一行原始碼,就可以有效降低合約被濫用的風險。

require(tx.origin == msg.sender, ‘Caller not user’)

我相信今天一定有很多人利用這點合約漏洞進行鑄造

Cygaar 還稱,在某些餐樹上的結構非常可怕,且很篤定大多數在合約的參數,並沒有使用在此次的鑄造合約中,所以合理懷疑這個合約一定是從其他地方複製貼上的:

整體來說,合約看起來非常草率,大小寫不一,隨意置放的註解、許多未使用到的變數、沒有進行優化。

我甚至不想花太多時間來分析這個合約,因為這只會沒完沒了。

為此,Cygaar 最後還給出幾點建議,並稱,若項目方未來還打算發新項目,很樂意代勞提前查看原始碼,此次項目相當草率與不專業。

  • 妥善實施簽名驗證,確保簽名來自訊息發送方
  • 對合約付出些努力、多用點心,別只是從其他地方複製貼上
  • 聘個審計員吧,任何合格的審計員都可以在短時間內發現這些漏洞

官方出面致歉

事發幾小時後,NBAxNFT 才在推特上出面對社群表達歉意,並表示目前正在確認漏洞所導致非白名單鑄造的事件。

官方有意識到因為智能合約有漏洞,導致白名單鑄造階段過早售罄的問題。

針對此狀況,我們深感歉意,目前正在確定那些具有白名單但尚未鑄造的錢包地址。

在該則推文底下也看到許多原先持有白名單的用戶,因為在鑄造期間出現漏洞,而交易失敗損失鑄造交易費的留言;不過,至截稿前,官方尚未對此再進行進一步說明。

據 OpenSea,NBA 項目 The Association NFT 目前地板價為 0.475 ETH(當等於 1,462.4 美元),項目目前共鑄造出 1.59 萬個 NFT,持有人數來到 8.6 千人,自開放鑄造至今,已有超過 2,100 ETH 的交易量。

ccryptoo 1 1650536049
– OpenSea –

📍