ABU:Zabu Finance闪电贷安全事件分析

前言

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

涉及对象

攻击合约

攻击合约1:

0x0e65Fb2c02C72E9a2e32Cc42837df7E46219F400

攻击合约2:

美国参议员ElizabethWarren质疑上市矿企Greenidge的环境足迹:12月3日消息,美国参议员ElizabethWarren在给上市公司首席执行官JeffreyKirt的一封详细信中质疑GreenidgeGeneration(GREE)在纽约州的比特币采矿业务的环境足迹。Warren写信给JeffreyKirt,她担心公司的能源使用以及对环境和消费者的影响。鉴于与比特币采矿相关的极高的能源使用量和碳排放量,Greenidge和其他工厂的挖矿作业引发了人们对其对全球环境、当地生态系统和消费者电力成本影响的担忧,并要求在12月17日前做出详细回应。(FxStreet)[2021/12/3 12:48:23]

0x5c9AD7b877F06e751Ee006A3F27546757BBE53Dd

GAMEE Bozena Rezab:区块链游戏仍应关注游戏本身属性:据官方消息,9月23日,GAMEE CEO&联合创始人Bozena Rezab在《HyperPay 焦点》第21期,主题为“《走进元宇宙》系列:揭秘链游和NFT热潮背后的‘幕后推手’”专场AMA中提到:元宇宙是一种现实体验(experiential reality),其中一种体验是参与游戏。随着区块链游戏的普及,应该期待新的游戏经济和游戏类型的出现。但是在利用区块链技术塑造游戏的未来时,不应该忽视游戏的核心吸引力是玩法而非技术。[2021/9/23 17:01:13]

ZABUFarm:

声音 | Nick Szabo:中央银行可能会将数字货币作为储备金:BitGold创始人Nick Szabo近日在以色列比特币峰会上发表讲话称,2019年,在全球地缘不确定性日益加剧的背景下,加密货币可能越来越被视为现有央行储备金额的合理替代品,在某些情况下,中央银行不能信任外国央行或政府债券。现有的解决方案是由瑞士政府提供,但这不是信任成本最小化的解决方案。瑞士政府本身受到压力,因此更加信任成本最小化的解决方案是加密货币。[2019/1/9]

0xf61b4f980a1f34b55bbf3b2ef28213efcc6248c4

SPORE:

Nick Szabo:比特币波动性大源自其未来的不确定性:智能合约先驱Nick Szabo今日在其社交媒体表示,比特币的波动性大是因为其未来的不确定性(方面和竞争方面),而不是限定的数量。当这些不确定性减少,比特币的波动性就会相应的下降,直到法币表现出更多的不确定性。[2018/6/22]

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:0ms0-1:121ms