ERC721R被爆存致命BUG!开发者示警:NFT项目方可借此掏空资金
据币圈子此前报导,为了改善币圈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在发布之前,仍在进行一些修正和全面审计,我们知悉创作者可以无限退款。很高兴听到您注意到的其他问题
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場