NBA最近发行了数字藏品,然而我们发现,其售卖数字藏品的合约存在非常严重的漏洞。攻击者(“科学家”)可以通过漏洞无成本铸造藏品然后出售获利。
漏洞的成因在于对白名单用户的签名校验有安全问题。具体来说,合约没有保证白名单签名只能被特定用户使用而且只能使用一次。因此,攻击者可以重用其他白名单用户签名铸造藏品。
从代码我们可以看出,verify
函数并没有将发送者地址放到签名中。另外,也没有机制保证该签名只能被使用一次。我们认为这一些安全实践是最基本的软件安全入门知识。我们非常惊讶这样的漏洞居然出现在非常知名的项目里面。
原文始发于微信公众号(BlockSec Team):如何错误验证签名: NBA 数字藏品发现为例
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论