NBA 推出的动态 NFT「THE ASSOCIATION」于昨日凌晨正式开放铸造,许多早期进入 Discord 的支持者皆能获得白名单资格。然而,却因为智能合约漏洞,导致许多没有白名单的用户也能够大量铸造,进而使得部分符合资格的用户损失权益。
THE ASSOCIATION NFT 合约漏洞
根据 Azuki 开发人员 cygaar 的说法,若想利用其合约漏洞,只需将此数据发送到尚未铸造过的钱包上的合约地址。无需拥有白名单资格也可以进行此操作。
将这段数据反编译后,你会看到它调用的函数是 mint_approved,仔细观察 info 中的参数会发现这段程式码主要是用来判断交易是否由铸造网站签名,以及用户是否在白名单内。然而,它少了一个关键部分,他没有去检查 info.from == msg.sender.
这意味者同样的签名能被任何人重复利用,只需一个有效的签名便可无限循环。虽然一个钱包仅能铸造一次,但要创建一个新钱包不过就是几秒钟的事情而已。
此外,cygaar 提出了一个更大的疏失。合约并没有检查交易是否来自用户,若能多添加一行:require(tx.origin == msg.sender, ‘Caller not user’),即可降低合约被滥用的风险。
上述漏洞被发现后,被许多有心人士利用,导致 NFT 在短时间内被铸造完毕,甚至导致有白名单的用户无法铸造。
「整理来看,合约看起来非常草率。随意的注解、大小写不一致、许多未使用的变数,且没有进行优化」cygaar 说道。
为了使智能合约更加安全完善,cygaar 给了几点建议:
- 妥善地进行签名验证,确保签名来自讯息发送方
- 对合约多用点心,别再只是到处复制贴上
- 聘请审计员,任何合格的审计员皆能在短时间内发现这些漏洞
官方致歉
在事情发生后,NBAxNFT 立即于其 Twitter 表达歉意,他们当前正在确认因漏洞导致无法铸造的白名单钱包。若有问题可于其 Discord 反应。
本文链接地址:https://www.wwsww.cn/NFT/11844.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。