Zabu Finance闪电贷安全事件分析

创宇区块链安全实验室
创宇区块链安全实验室 机构得得号

Sep 16, 2021 专注构建区块链安全生态,致力于让人类进入安全的区块链世界。

摘要: 9月12日,Avalanche 上的 DeFi 协议 Zabu Finance 项目遭受闪电贷攻击。

前言

9月12日,知道创宇区块链安全实验室 监测到 Avalanche 上的 DeFi 协议 Zabu Finance 项目遭受闪电贷攻击。知道创宇区块链安全实验室 第一时间跟踪本次事件并分析。

涉及对象

攻击合约

攻击合约1:0x0e65Fb2c02C72E9a2e32Cc42837df7E46219F400

攻击合约2:0x5c9AD7b877F06e751Ee006A3F27546757BBE53Dd

漏洞合约

ZABUFarm:0xf61b4f980a1f34b55bbf3b2ef28213efcc6248c4

SPORE:0x6e7f5c0b9f4432716bdd0a77a3601291b9d9e985

漏洞成因分析

漏洞产生原因在于Defi协议与代币协议之间的不兼容,其不兼容主要是zabuFarm合约质押功能与spore合约转账功能出现冲突,下面从双方功能实现逻辑来分析冲突。

zabuFarm合约质押功能

zabuFarm合约质押功能由函数deposit实现

简述deposit函数实现逻辑:

1.由传参_pid获取对应矿池信息与用户信息

2.更新_pid对应矿池信息,当用户账户不为 0 向用户发送质押已产生奖励

3.将传参_amount 数量的代币从函数调用者转移到该合约

4.更新用户添加的代币以及最新奖励状态

5.触发质押事件

spore合约转账功能

spore合约转账功能由函数_transferStandard实现(ps:_transferStandard函数是zabuFarm合约质押功能转账时调用的函数)

 简述_transferStandard函数实现逻辑:

1.由传参tAmount通过_getValues函数获取五个值,分别是rAmount 实际转账数量, rTransferAmount收费后转账数量, rFee实际费用,tTransferAmount初始转账数量,tFee初始费用

2.对相应账户进行实际转账代币数量更新

3.通过_reflectFee函数进行费用记录更新

由此我们可以发现zabuFarm合约质押功能与spore合约转账功能出现冲突的本质在于deposit函数仅是对用户传入转账金额_amount做用户账户更新记录,而不是对_transferStandard函数在收取费用后实际转账做用户账户更新记录,导致实际收款小于账户记录,俗称亏本买卖。

简述攻击过程

1.利用攻击合约1 0x0e65,将WAVAX代币通过Pangolin置换成SPORE 代币,并质押到ZABUFarm合约中;

2.通过攻击合约 2 0x5c9A 从 Pangolin 闪电贷借出 SPORE 代币,并利用 SPORE 代币不断在ZABUFarm合约进行质押-提现的操作,消耗原本属于ZABUFarm合约的SPORE 代币,由于 ZABUFarm 合约是通过SPORE 代币总量计算奖励,攻击合约1 0x0e65 会获得巨额 ZABU 代币奖励;

3.最后取出质押SPORE代币,归还闪电贷,抛售ZABU 代币获利。

总结

此次攻击属于defi协议与代币协议之间不兼容导致的,迄今为止此类攻击事件已发生数次,知道创宇区块链安全实验室再次提醒,近期各 链上频频爆发攻击事件,合约安全愈发需要得到迫切重视,合约审计、风控措施、应急计划等都有必要切实落实。

作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 创宇区块链安全实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信