ccryptoo 1 1649823254
新聞

ERC721R 遭爆存在致命 BUG!開發者示警: NFT 項目方可藉此掏空資金

為了改善幣圈軟地毯騙局(Rug Pull)猖獗亂象,有開發者在10 日提出新代幣標準 ERC721R ,旨在允許鑄幣者在一定期間內,可以申請退回當初鑄造的資金。然而,如今 ERC721R 卻被爆出存在致命 BUG , NFT 項目方可利用 ERC721R 合約中的一個 BUG 來發起 RugPull 。
(前情提要:ERC721R 新標準發布!允許用戶在鑄造 NFT 後「期限內反悔退款」;但遭社群打槍

 

動區此前報導ERC721R」,旨在允許鑄幣者在一定期間內,可以申請「退回」當初鑄造的資金。然而,如今卻有不少人示警,Rug Pull 風險仍然存在。

存在致命 BUG?

GoPocket 核心開發者 BenLaw 12 日就在推特上警告,ERC721R 代碼存在致命 BUG ,由於缺少對退款接收地址的限制條件,開發者可通過 bug,在 ERC721R 的限制期內抽走 NFT 合約中的資金,進而繞開協議約束,實現RugPull。

BenLaw 解釋道,ERC721R 的退款 refund() 函數存在問題:

問題出在退款 refund() 函數上: NFT 的買家調用 refund() 後會將他 mint 的 NFT 轉到 refundAddress (該地址由開發者指定並控制),然後從 NFT 合約中拿到相應數量的以太。但如果 refundAddress 本身就 mint 了 NFT 呢?

騙子開發者設置一個 refundAddress ,然後用該地址 mint 一個 NFT 。下一步他直接調用退款函數 refund() 。因為所有的 NFT 都會退款到該 refundAddress ,所以他在拿到了一些以太的同時還持有著這個 NFT。他可以不斷調用 refund 來掏空合約裡的錢。

BenLaw 最後提醒,這個 BUG 直接讓 ERC721R 變得形同虛設,開發者還是可以攜款跑路,而且在 7 天無理由退款敘事下,開發者的意圖能隱藏得更深,故建議新的 NFT 項目在 ERC721R 更新之前,不應該直接使用其代碼。

慢霧發出安全警告

與此同時,區塊鏈安全公司慢霧(SlowMist)也同樣在推特上針對 ERC721R 發出安全警告,指出 NFT 項目方可以利用 ERC721R 合約中的一個 bug 來發起 Rug Pull ,而經慢霧安全團隊初步分析,這種缺陷本質上是由於 owner 權限過大問題所導致。

慢霧解釋道:

在 ERC721R 示例合約中,owner 可以通過 setRefund Address 函數任意設置接收用戶退回的 NFT 地址。當此退回地址持有目標 NFT 時,可以通過調用 refund 函數,不斷地進行退款操作。

合約中還有一個 ownerMint 函數,允許所有者在未達到總供應量時進行鑄幣。慢霧安全團隊建議,所有用戶在參與 NFT 鑄幣時應進行風險評估,無論項目方是否使用 ER721R 標準。

ERC721R 合約將修正問題

在 bug 問題被爆出後,Elie Steinbock 今日回應,已注意到相關問題,並將進行修正:

ERC721R 在發布之前,仍在進行一些修正和全面審計,我們知悉創作者可以無限退款。很高興聽到您注意到的其他問題。

📍