币圈子-打造专业区块链媒体平台

ERC721R被爆存致命BUG!开发者示警:NFT项目方可借此掏空资金

2022-04-13 11:26:23 | 来源:互联网 | 18316人阅读 | 作者:币圈子
全文导读
为了改善币圈Rug Pull(可以理解为捐款跑路)猖獗乱象,有开发者在10日提出新代币标准ERC721R,旨在允许铸币者在一定期间内,可以申请退回当初铸造的资金。然而,如今ERC721R却被爆出存在致命BUG,NFT项目方可利用ERC721R合约中的一个BUG来发起Rug Pull。

ed24c6d290f0d5ed20d4bd27bc222275.jpg

据币圈子此前报导,为了改善币圈Rug Pull猖獗,Exodia创办人Elie Steinbock等人在10日提出一个新代币标准ERC721R,旨在允许铸币者在一定期间内,可以申请退回当初铸造的资金。然而,如今却有不少人示警,RugPull风险仍然存在。

存在致命BUG?

GoPocket核心开发者Ben Law12日就在推特上警告,ERC721R代码存在致命BUG,由于缺少对退款接收地址的限制条件,开发者可通过bug,在ERC721R的限制期内抽走NFT合约中的资金,进而绕开协议约束,实现RugPull。

Ben Law解释道,ERC721R的退款refund()函数存在问题:问题出在退款refund()函数上:NFT的买家调用refund()后会将他mint的NFT转到refund Address(该地址由开发者指定并控制),然后从NFT合约中拿到相应数量的以太。但如果refund Address本身就mint了NFT呢?骗子开发者设置一个refund Address,然后用该地址mint一个NFT。下一步他直接调用退款函数refund()。因为所有的NFT都会退款到该refund Address,所以他在拿到了一些以太的同时还持有着这个NFT。他可以不断调用refund来掏空合约里的钱。

Ben Law最后提醒,这个BUG直接让ERC721R变得形同虚设,开发者还是可以携款跑路,而且在7天无理由退款情况下,开发者的意图能隐藏得更深,故建议新的NFT项目在ERC721R更新之前,不应该直接使用其代码。

慢雾发出安全警告

与此同时,区块链安全公司慢雾(SlowMist)也同样在推特上针对ERC721R发出安全警告,指出NFT项目方可以利用ERC721R合约中的一个bug来发起RugPull,而经慢雾安全团队初步分析,这种缺陷本质上是由于owner权限过大问题所导致。

慢雾解释道:在ERC721R示例合约中,owner可以通过setRefund Address函数任意设置接收用户退回的NFT地址。当此退回地址持有目标NFT时,可以通过调用refund函数,不断地进行退款操作。合约中还有一个ownerMint函数,允许所有者在未达到总供应量时进行铸币。慢雾安全团队建议,所有用户在参与NFT铸币时应进行风险评估,无论项目方是否使用ER721R标准。

ERC721R合约将修正问题

在bug问题被爆出后,ElieSteinbock今日回应,已注意到相关问题,并将进行修正:ERC721R在发布之前,仍在进行一些修正和全面审计,我们知悉创作者可以无限退款。很高兴听到您注意到的其他问题

温馨提示:文章不代表币圈子立场,不构成任何投资建议,谨防风险!本文来源于币圈子网站,转载请注明出处!侵权必究!
相关阅读
扩展阅读