歐科雲鍊鍊上天眼:NFT項目方Akutars的11,539.5 ETH(約合3,400萬美元)被永久鎖定在拍賣合約。 Aku採用的是類似荷蘭降價拍賣的形式,拍賣結束後會按照結束價格給用戶退還超過最低價格的部分,因此這涉及refund以及total bids統計兩個方面,而項目方在這兩個方面均存在實現邏輯問題。第一個漏洞,processRefunds() 會被惡意合約阻斷,實現DoS攻擊,也確有用戶使用惡意合約阻斷了processRefunds()執行,但該名用戶表示只是讓項目方確認問題存在,隨即設置惡意合約變量,使得processRefunds()順利執行完,因此該漏洞雖被利用,但已成功解決。第二個漏洞,也就是真正導致項目方無法提款的關鍵所在,processRefunds()是按照msg.sender的數量記錄在了refundProgress變量,拍賣結束項目方調用claimProjectFunds()取出合約內的ETH時,要求滿足refundProgress >= totalBids,而totalBids記錄的是NFT的數量,合約最終狀態refundProgress數值為3669,totalBids數值為5495,從而導致項目方無法提取合約內的11539.5 ETH。需要指出的是,在執行processRefunds()之前,參與拍賣的用戶可以在三天后通過emergencyWithdraw()將個人投入的ETH取回,但由於processRefunds()的執行,導致用戶的拍賣狀態由未處理變為refund,從而不能再進行emergencyWithdraw()。