慢霧:TreasureDAO NFT交易市場「零元購」漏洞分析
2022-03-03 11:30
本文約1264字,閱讀全文需要約2分鐘
該漏洞導致ERC-721標準的NFT可以直接被轉移且計算價格時購買NFT所需費用被計算為0。
AI總結
展開
該漏洞導致ERC-721標準的NFT可以直接被轉移且計算價格時購買NFT所需費用被計算為0。
相關信息
相關信息
合約地址
TreasureMarketplaceBuyer:
0x812cda2181ed7c45a35a691e0c85e231d218e273
TreasureMarketplace:
0x2e3b85f85628301a0bce300dee3a6b04195a15ee
漏洞細節分析
1. 用戶通過TreasureMarketplaceBuyer 合約中的buyItem 函數去購買NFT,該函數會先計算總共需要購買的價格並把支付所需的Token打入合約中,接著調用TreasureMarketplace 合約中的buyItem 從市場購買NFT 到TreasureMarketplaceBuyer 合約,接著在從TreasureMarketplaceBuyer 合約中把NFT 轉給用戶。

2. 在TreasureMarketplace 合約中:

攻擊交易分析"not enough quantity"攻擊交易分析
攻擊交易分析
此處僅展示一個攻擊交易的細節,其餘攻擊交易的手法都一致,不再贅述。
攻擊交易:
https://arbiscan.io/tx/0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02
攻擊者:
0x4642d9d9a434134cb005222ea1422e1820508d7b
攻擊細節:

總結
總結
總結
本次漏洞的核心在於進行ERC-721 標準的NFT 轉移前,缺少了對於傳入的_quantity 參數不為0 的判斷,導致了ERC-721 標準的NFT 可以直接被轉移且計算價格時購買NFT 所需費用被計算成0。針對此類漏洞,慢霧安全團隊建議在進行ERC-721 標準的NFT 轉移前,需對傳入的數量做好判斷,避免再次出現此類問題。
DAO
NFT
安全
歡迎加入Odaily官方社群


