总论
团队通过 Ethereum 2015 - 2022 年的链上数据,119900个NFT合约、83100000个NFT Token 和 25900000个NFT相关合约项目(如Market) 做分析,得到如下结果:
- 19.0% 的NFT合约有越权漏洞
- 55.4%的NFT合约有issues( 包括重入漏洞等vulns )
- 有75个NFT合约发生过 sleepmint 攻击
- 61.8%的NFT合约过于中心化。( 无论是 vote token or 权限管理 )
- Wash Trading 在 NFT市场中泛滥
Off-chain Risk
19%的NFT Contract 中的所有tokenURI 无法访问
On-chain Risk
链上NFT合约有14.9%没有开源,在开源的代码中,我团队发现的一些漏洞如下:
Akutar NFT 漏洞实例
重入漏洞
越权漏洞
越权漏洞举例
- 缺少NFT权限验证。如下图中_checkOpenTransfer函数没有返回True or False,不管有没有权限都能执行后面的 _safeTransfer
- 左图中的Burn函数 只验证了tokenid是否存在,未验证msg.sender是否有权销毁该tokenid.
- 下图中的ownerClaim函数给管理员开辟了一个无手续费的任意mint后门。可能造成非预期增发。