最近一段时间,Web3.0不断“刷屏”,NFT张狂“出圈”,有人撸空投,有人搞收藏,有人说,NFT的爆炸性增加正在推进Web 3.0的开展。

Web1.0 到 Web2.0 完成了内容的消费者向内容生产者的改变,其本质是进行了一次从物理世界向网络世界的平行时空的大迁徙,当咱们畅谈 Web3.0 的开展时,不得不进一步说到关于区块链,因为区块链的去中心化、去信赖和防篡改的特性很好的对标了 Web3.0 的目标——发明新一代互联网,让每个用户把握自己的数据、身份和命运。

Web3.0基于区块链而存在,许诺将隐私和数字身份还给用户,一起因为NFT等的应用,完成了新的互动水平。但咱们更需要的是Web3.0热潮下NFT的许多“危险”与“危险”,最近NFT范畴随处可见的“黑客事情”也证明了咱们需要将“安全”放在第一位。

近期发生了哪些NFT合约安全事情?

4月21日,NBA的NFT项目合约遭受进犯,进犯者运用了签名未验证,在合约代码中,vData memory参数info在传入函数中未进行验证导致签名可复用,进犯者可以经过运用其他人的签名来进行Mint,导致项目方被张狂“薅羊毛”。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

而在4月23日,NFT项目Akutar惊现初级缝隙,它的AkuAuction合约因为智能合约本身缝隙,导致11539ETH(价值约3400万美元)被锁死在合约中。经成都链安技能团队分析,发现Akutar项目的智能合约包含2个缝隙:

第一个合约缝隙在processRefunds中,规划者依据refundProgress计数器进行循环退款,而如果有进犯者此时在fallback中进行revert则会导致后边的人都无法进行退款,这个缝隙被人在链上证明但没有进行进犯运用。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

第二个缝隙在claimProjectFunds中,require语句(refundProgress > = totalBids)的totalBids变量应该是bidIndex,这个缝隙使得该判别条件永久失利,导致无法履行后续的提款操作。最终,导致项目方11539ETH(价值约3400万美元)被确定无法提取。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

可见关注NFT合约危险,变得越来越急迫。

NFT合约问题包含哪些?

依据NFTSCAN数据显现,现在全球NFT项目已挨近七万个,而且数据还在继续增加中。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

数据来源:NFTSCAN(计算时间:2022.4.25 18:00)

NFT作为Web3.0的底座,它的安全问题对行业开展相同重要,为了护航Web3.0的安全生态,成都链安经过智能合约形式化验证工具链必验对上千个NFT项目进行缝隙扫描,发现NFT常见的合约问题还包含以下几类:

事务逻辑相关问题:

此类问题可能直接导致合约的事务逻辑出错。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

缝隙描绘:chapterAuctionMinted的值永久为初始值,可是在此处运用的判别条件中,运用了该值进行条件查看。如果在开发期间运用【链必验】扫描后,开发者可依据扫描成果判别是否是相关逻辑缺失(可能导致NFT过量发放等事务逻辑安全问题),亦或是冗余代码。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

缝隙描绘:未检测返回值。在NFT项目中,常常存在有偿铸币的功用,调用者需要将作为铸币手续费的ERC20代币发送到NFT铸币合约中,然后NFT铸币合约为其铸造对应数量的NFT代币。可是部分ERC20合约存在假充值的问题,即转账失利不抛出反常而是返回false,这样就会导致一个问题,进犯者可以运用这点,在未付出手续费的情况下,铸造任意数量的NFT。开发者应依据VaaS扫描成果的主张,查看transferFrom操作的返回值或许运用safeTransferFrom函数进行ERC20代币转账。

代码标准相关问题

此类问题可能不会直接形成事务逻辑出错,可是会影响代码的可读性,形成合约调用时有多余的gas耗费等。一起不标准的代码也简单导致编写时逻辑混乱,有隐藏的逻辑过错的概率更高。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

缝隙描绘:此处循环的完毕条件为curr>=0,而curr为uint导致curr>=0恒满意。此处会导致循环无法正常完毕。【链必验】在扫描中会对这类成果为定值的条件进行告警,用户可以经过提示承认此处逻辑,对条件进行删除或修正。

疯狂“出圈”和刷屏之后 Web3.0热潮下的NFT安全如何保证?

缝隙描绘:此处event中将string类型的数据标记了indexed,该写法会导致在事情成果中无法直接获得对应的string成果。主张用户参阅【链必验】的提示,仅运用indexed修饰固定长度的变量。

研讨发现,大多数的NFT合约都没有进行过专业的安全审计,这就存在很大的安全危险,简单导致进犯事情的发生,形成财物的丢失。所以NFT智能合约开发者应具备基本的安全开发意识,了解智能合约开发应留意的安全问题;此外,在合约规划和完成时,留意代码完成的正确性。咱们主张开发完成后,可运用【链必验】对项目进行安全检测。项目上线前,可选择安全审计,躲避安全危险。

安全,是区块链技能可以得以长足开展的重要保证,看护Web3.0的安全也变得愈发重要。今天咱们所讲的事务逻辑相关问题和代码标准性相关问题,也是智能合约里面常见的问题类型,后续咱们将继续推出NFT相关安全文章,请我们继续关注咱们

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注