NBA球員卡NFT合約漏洞百出!沒白名單也可免費鑄造
鏈新聞 2022-04-21 12:30
NBA 推出的動態 NFT「THE ASSOCIATION」於昨日凌晨正式開放鑄造,許多早期進入 Discord 的支持者皆能獲得白名單資格。然而,卻因為智能合約漏洞,導致許多沒有白名單的用戶也能夠大量鑄造,進而使得部分符合資格的用戶損失權益。
THE ASSOCIATION NFT 合約漏洞
Let"s take a deep dive on the @NBAxNFT contract today including how the exploit worked and what I think of the contract overall:
— cygaar (@cygaar_dev) April 20, 2022
根據 Azuki 開發人員 cygaar 的說法,若想利用其合約漏洞,只需將此數據發送到尚未鑄造過的錢包上的合約地址。無需擁有白名單資格也可以進行此操作。
將這段數據反編譯後,你會看到它調用的函數是 mint_approved,仔細觀察 info 中的參數會發現這段程式碼主要是用來判斷交易是否由鑄造網站簽名,以及用戶是否在白名單內。然而,它少了一個關鍵部分,他沒有去檢查 info.from == msg.sender.
這意味者同樣的簽名能被任何人重複利用,只需一個有效的簽名便可無限循環。雖然一個錢包僅能鑄造一次,但要創建一個新錢包不過就是幾秒鐘的事情而已。
此外,cygaar 提出了一個更大的疏失。合約並沒有檢查交易是否來自用戶,若能多添加一行:require(tx.origin == msg.sender, ‘Caller not user’),即可降低合約被濫用的風險。
上述漏洞被發現後,被許多有心人士利用,導致 NFT 在短時間內被鑄造完畢,甚至導致有白名單的用戶無法鑄造。
「整理來看,合約看起來非常草率。隨意的註解、大小寫不一致、許多未使用的變數,且沒有進行優化」cygaar 說道。
為了使智能合約更加安全完善,cygaar 給了幾點建議:
- 妥善地進行簽名驗證,確保簽名來自訊息發送方
- 對合約多用點心,別再只是到處複製貼上
- 聘請審計員,任何合格的審計員皆能在短時間內發現這些漏洞
官方致歉
We recognize the issues with the smart contract which caused the Allow List supply to sell out prematurely. We apologize for this situation and are currently identifying the Allow List wallets that were not able to mint as a result.
— NBAxNFT (@NBAxNFT) April 20, 2022
在事情發生後,NBAxNFT 立即於其 Twitter 表達歉意,他們當前正在確認因漏洞導致無法鑄造的白名單錢包。若有問題可於其 Discord 反應。
相關資料:THE ASSOCIATION NFT 合約程式碼、THE ASSOCIATION NFT 合約持有者
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 從零到一掌握加密世界 開啟財富之路!
- 掌握全球財經資訊點我下載APP
上一篇
下一篇