鸵鸟区块链

SharkTeam:十大智能合约安全威胁之回退攻击

SharkTeam 2022-11-03 15:10
摘要:

回退是区块链上的一种机制

问:我们常提到的智能合约漏洞真的是实际中威胁最大、发生最频繁的安全漏洞吗?

答:完全不是那样。例如“溢出”、“外部调用”等常提到的智能合约安全漏洞并不是最常发生,威胁最大的。

到底哪些安全威胁从发生频率和危害性上能称为Top10的呢?SharkTeam合约安全系列课程之【十大智能合约安全威胁】和您一起讨论和深入。第八课【详解回退攻击】。

image.png

一、什么是回退攻击

回退是区块链上的一种机制。回退操作是为了恢复到之前的状态,无论是简单的交易转移,还是处理一些更复杂的逻辑合约调用。在这异常的交易操作中,gas成本费是不会被退还的。

回退攻击是根据操作结果来决定的,如果操作结果没有达到攻击者预期的效果,攻击者会让交易回退。

以太坊在拜占庭升级后,EVM中实现了EIP-140:REVERT 指令。REVERT 指令在执行中发送异常,将撤消所有状态更改,但其处理方式与无效操作码(0xfe)有两种不同的处理方式:

(1)它将允许你返回一个值。

(2)它将把剩余的gas退还给调用者。

Solidity中提供了revert()、require()两种方法,这两种方法使用0xfd操作码触发错误条件。0xfd操作码在EIP-140中被映射到REVERT指令,即两种方法可以在执行中发送异常,将撤消所有状态更改,返还剩余gas。

我们在开发中定义了require(condition, "description"),如果有定义error Error(string),那么require(condition, "description")等效于if (!condition) revert Error("description"))。

目前针对GameFi市场智能合约的攻击类型主要是回退攻击,因此接下来我们回顾下相关的攻击事件。

二、攻击事件分析

2.1 CryptoZoan

CryptoZoan在币安智能链 (BSC)上以NFT游戏的玩法和体验为重点,旨在创建一个与区块链和游戏相结合的新金融系统,使用户在进行游戏的同事,赚取收益。该游戏通过加入随机性的机制来增强用户体验,用户可以将游戏中的“蛋”进行孵化,ZOAN随机拥有一个稀有度等级,ZOAN终生依附于这个稀有度等级,总共有6个等级,等级越高,价值越高。攻击者利用随机性与回退的结合,使得攻击者的孵化请求得到想要的结果(Level 6),破坏游戏的公平性,使得攻击者获得最高收益。

攻击流程:

(1)将待孵化的蛋部署在攻击合约;

(2)调用攻击合约触发evolveEgg(uint256)函数;

(3)检查稀有度,如果等级太低则进行回滚;(可能会消耗Gas费用,需要去权衡选择是否继续。)

(4)取出高等级的宠物。

攻击脚本如下:

image.png

加入require判断,要求稀有度等级必须大于等于6才可以正常执行,否则将交易回滚。

2.2 CryptoZoons

CryptoZoons的任务是与怪兽战斗。玩家首先选择要在战斗中使用的生物,并通过在 MarketPlace 购买这些物品来为它们装备武器。玩家将支付一点 BNB gas 价格与选定的敌人进行战斗,同时获胜的一方会获得一定数量的代币。正是由于合约中回退机制,使得攻击者在战斗结束后可通过余额判断是否获胜。取得胜利时,则发送交易正常执行;失败时进行回滚。

攻击流程:

(1)将宠物部署在攻击合约;

(2)让合约触发战斗;

(3)检查代币是否增加(战斗是否胜利);

(4)战斗失败,将交易回滚,发送交易;

(5)战斗胜利,发送交易。

攻击脚本如下:

image.png

加入require判断,要求余额必须大于交易前(战斗胜利)才可以正常执行,否则将交易回滚。

三、预防措施

我们回顾了相关事件后,我们在开发过程中应当采取哪些适当的措施来降低回退攻击风险呢?

(1)使用OpenZeppelin安全库中isContract()方法判断调用地址是否合约地址。

(2)进行权限设置,限制特定的合约地址和EOA调用。

(3)项目上线前,需联系专业的第三方专业审计团队进行审计。

关于我们:SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。

image.png

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/bFmbFy74 

Telegram:https://t.me/sharkteamorg 

更多区块链安全咨询与分析,点击下方链接查看

D查查|链上风险核查 https://m.chainaegis.com

声明: 鸵鸟区块链所有发布内容均为原创或授权发布,如需转载,请务必注明文章作者以及来源:鸵鸟区块链(微信公众号:MyTuoniao),任何不尊重原创的行为鸵鸟区块链都将进行责任追究!鸵鸟区块链报道和发布内容,不构成任何投资建议。

SharkTeam

——

154 篇 作品