SharkTeam独家分析 | GameFi安全事件分析与风险防范建议
1.GameFi发展迅速,风险随之而来,不容忽视
Gamefi可以简单理解为NFT+DeFi。一方面,Gamefi将DeFi 融合到游戏中,也就是DeFi 游戏化,使得DeFi 更有趣味性,从而促进GameFi 生态的发展;另一方面,Gamefi通过提供流动性挖矿等方式,让玩家拥有了更多的入场方式,带来了二级交易市场的活跃,并获得收益。Gamefi是DeFi和NFT发展的必然结果,它的价值在于能够使参与者在享受游戏带来的乐趣的同时,还能够从中获得真正的收益。相比于传统游戏的“Deposit to Play”,Gamefi是“Play to Earn”,前者是花钱充值再玩游戏,后者是一边玩游戏一边赚钱。GameFi 还通过游戏化的设置赋予了NFT更实用的价值,里面的NFT道具,不再仅仅是被挂在NFT交易平台上的待出售商品,还可以直接在游戏里的市场上进行交易的,且整个交易过程比传统游戏简单。
GameFi不仅改变了传统游戏世界,也让许久未出现创新的DeFi有了更多新的玩法和机会。GameFi在融合游戏趣味性的基础上,提供流动性挖矿等方式,以及带来了二级交易市场的火热,给普通用户带来了更多收益的可能。那么普通用户参与GameFi有哪些方式呢?
(1)参与GameFi游戏:首先,用户可以去体验参与这些GameFi项目。这些NFT游戏在不同的设计机制上能给玩家获取相应的代币奖励、质押奖励或道具NFT的机会。
(2)投资GameFi代币:不同的项目通常会发行自己游戏中需要使用的代币,可以根据自己的价值判断和兴趣偏好,选择部分项目的代币进行投资。
(3)除了区块链游戏项目本身,还可以关注一些为GameFi服务的机构或团队,根据其发展规模及前景分销代币是否具有投资价值。
但随着GameFi市场的繁荣发展,风险也随之而来,SharkTeam在近期的工作中发现,针对GameFi的黑客攻击明显增多,新的攻击模式已然产生,需要我们项目方和投资者重视,防患于未然,避免产生大的资金损失而后悔莫及。
目前针对GameFi市场智能合约的攻击类型主要包含:回退攻击、三明治攻击和双花攻击。
2.回退攻击
CryptoZoan
l 不公平的孵蛋
CryptoZoan在币安智能链 (BSC)上以NFT游戏的玩法和体验为重点,旨在创建一个与区块链和游戏相结合的新金融系统,使用户在进行游戏的同事,赚取收益。近期CryptoZoan受到了回退攻击。该游戏通过加入随机性的机制来增强用户体验,用户可以将游戏中的“蛋”进行孵化,ZOAN随机拥有一个稀有度等级,ZOAN终生依附于这个稀有度等级,总共有6个等级,等级越高,价值越高。攻击者利用随机性与回退的结合,使得攻击者的孵化请求得到想要的结果(Level 6),破坏游戏的公平性,使得攻击者获得最高收益。
攻击交易:
https://bscscan.com/tx/0x15d791f557f4d803f686f6aa8b3481c651ae38dd1b35720c6e34eb04d19bd4bf
攻击流程:
(1)将待孵化的蛋部署在攻击合约;
(2)调用攻击合约触发evolveEgg(uint256)函数;
(3)检查稀有度,如果等级太低则进行回滚;(可能会消耗Gas费用,需要去权衡选择是否继续。)
(4)取出高等级的宠物。
攻击脚本如下:
对随机孵化出的等级进行筛选,当等级大于6时正常结束;当等级小于6级时触发回退机制。(会消耗一定的gas费用)
l 战斗必胜
CryptoZoons的任务是与怪兽战斗。玩家首先选择要在战斗中使用的生物,并通过在 MarketPlace 购买这些物品来为它们装备武器。玩家将支付一点 BNB gas 价格与选定的敌人进行战斗,同时获胜的一方会获得一定数量的代币。正是由于合约中回退机制,使得攻击者在战斗结束后可通过余额判断是否获胜。取得胜利时,则发送交易正常执行;失败时进行回滚。
攻击流程:
(1)将宠物部署在攻击合约;
(2)让合约触发战斗;
(3)检查代币是否增加(战斗是否胜利);
(4)战斗失败,将交易回滚,发送交易;
(5)战斗胜利,发送交易。
攻击脚本如下:加入判断,要求余额必须大于交易前(战斗胜利)才可以正常执行,否则将交易回滚。截至目前该合约脚本还在运行中。
安全建议:使用OpenZeppelin的安全库isContract()对调用地址是否为合约进行判断。
Meebits
LarvaLabs推出了一个名为 Meebits 的项目,Meebit也受到了回退攻击。所有Meebits都具有随机特征。然而,当推出时,一些用户想出了如何欺骗系统并重新滚动特征以获得他们想要的特征。Meebits 项目的智能合约中包含一个存档文件,该文件显示了每Meebit 代币ID的特征。用户可以启动Meebit的铸造,如果他们通过比较特征文件发现令牌并不罕见,则可以取消它。
攻击者利用这一点,发起了 300多个交易 来进行攻击。如果没有足够稀有的特征,他们发起铸造的每个 Meebit 都会被回退。经过 300 多次交易,他们终于能够偶然开出一个罕见的 Meebit。攻击者声称虽然花费每小时20,000美元的Gas费用铸造这个稀有 Meebit,但他们仍然利用合同来这样做。他们能够以 200 ETH 的价格出售他们新铸造的 Meebit,当时价值约为 750,000 美元。
LarvaLabs 不久后获悉此事并暂时停止了 Meebit 的铸造,并发表声明,“我们已暂时暂停Meebits合约的社区铸造和交易。合约是安全的,所有Meebits 都是安全”。Meebits 仍然是完全随机分配的——除非你投入大量的时间和Gas。
3.“三明治”攻击
区块链的透明度、以及执行订单的延迟(往往在网络拥堵情况下),使抢先交易更加容易,并极大降低了交易的安全性。攻击者(或者我们叫他掠夺性交易员)会找到一个待处理的受害者交易,然后试图通过前后的交易夹击该受害者。这种策略来源于买卖资产从而操作资产价格的方法。
所有区块链交易都可在内存池(mempool)中查到。一旦掠夺性交易者注意到潜在受害者的待定资产X交易被用于资产Y,他们就会在受害者之前购买资产Y。掠夺性交易者知道受害者的交易将提高资产的价格,从而计划以较低的价格购买Y资产,让受害者以较高的价格购买,最后再以较高的价格出售资产。
Polkamonster
攻击交易:
https://bscscan.com/tx/0x1a31bfc4d3c4a726c931cb784f9e79606d62996b6251c9ad959e5b2e6621fd9e
https://bscscan.com/tx/0xb9ec7e204f186660a377beeee8e9223107f46d8718314fbfdc4133580311442e
两笔交易都在10139859 的块中,攻击者以7.7gwei更高的交易费来执行价格更新操作。
攻击流程:
(1)被攻击者发现攻击合约的NFT比较便宜,以正常的gas价格发起请求进行购买,该交易进入mempool中;
(2)攻击者发现有人购买他的宠物,立即以一笔更高gas价格的交易来更新宠物价格;
(3)在真正执行被攻击者交易时,按照更新后的高价格进行购买。
攻击导致受害者的地址余额被清空,损失很大。而对于攻击者来说,如果攻击不成功也只是付出少量的gas费用而已。
安全建议:更新价格的操作,需要有一个快的冷却时间;在购买时将当时的价格作为参数;用户只要approve本次需要的数量即可,不要每次都approve max。
4.“双花”攻击
CryptoPunks
CryptoPunks可以说是迄今为止最受欢迎的 NFT 项目, CryptoPunks 在 2017 年推出后在其智能合约中出现了一个有影响的错误。在所有 10,000 Punks 售出并启动二级市场后,发现了一个商品已出售但无法收到付款的错误.CryptoPunks的联合创始人John Watkinson 就这个问题表示感到遗憾,承认是智能合约的设计漏洞,使得卖家收到不ETH。
攻击交易:
https://etherscan.io/tx/0xb11f88e22d477dbd9d6fa0efabbf3cc70f315e86dde3928b49b56f21e548cce6
https://etherscan.io/tx/0xc11887d04a53bdc5d7a687331871922f7b1535d40153d9f8c8d4363d531fe10f
攻击者通过这几笔交易共获利90个ETH和3个当时价值90ETH的CryptoPunks。
漏洞细节:
当攻击者调用buyPunk函数购买时,需要支付相应的ETH进行购买。合约将买方的ETH转给卖方(offer.seller)。但是在转账之前,合约执行了punkNoLongerForSale(punkIndex)语句。该函数主要实现了将NTF的seller字段设定为msg.sender(买方)。
因此,合约再将ETH转账给卖方时,通过offer.seller来确定卖方并进行转账。该合约“过早的转让NTF的出售权”逻辑漏洞的设计使得攻击者实现了“双花”攻击。
安全建议:官方也将该漏洞进行了修补,通过增加seller地址来代表本次交易中卖方的身份,避免类似这种情况的发生。
团队介绍
SharkTeam专注于智能合约安全,由拥有多年一线网络安全实战经验的团队成员组成,精通区块链和智能合约底层原理,具备完善的区块链漏洞挖掘和智能合约审计能力,可提供全面的威胁建模、合约审计、应急响应服务,已帮助多个知名区块链项目发现并修复安全漏洞,致力于保护用户数字资产安全与隐私安全。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum