EGD被黑客攻击损失超3.6万 BUSD,事件分析

 

0x1 事件背景

零时科技区块链安全情报平台监控到消息,北京时间2022年8月8日,EGD加密项目疑似遭到黑客攻击,损失超3.6万 BUSD,零时科技安全团队及时对此安全事件进行分析。

 

0x2 攻击信息

  1. 攻击者钱包地址:

0xee0221d76504aec40f63ad7e36855eebf5ea5edd

  1. 攻击合约地址:

0xc30808d9373093fbfcec9e026457c6a9dab706a7

  1. 攻击交易:

0x50da0b1b6e34bce59769157df769eb45fa11efc7d0e292900d6b0a86ae66a2b3

  1. EGD_Finance合约:

0x93c175439726797dcee24d08e4ac9164e88e7aee

 

0x3 攻击步骤

1. 部署攻击合约,调用EGD_Finance合约中stake函数,向EGD_Finance合约发送 100 USD,获得userStakeList

2.利用闪电贷从合约0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae借出2000 USD至攻击者合约地址

3. 使用闪电贷从BEP20USDT合约中借出424,456 USD

4. 调用claimAllReward() 获得奖励 5,614,105 EGDToken

5. 将从EGDFinance 合约中用闪电贷借出的USD 归还

6. 将获得的5,052,695 EGDToken 兑换为37,327 USD

7. 将从0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae 通过闪电贷借出的资金归还

8. 将获得的剩余资金发送至攻击者地址,共36,044 USD

 

0x4 漏洞核心

攻击者利用EGDToken的价格计算方式进行攻击

获取EGD价格方式为用USD数量除EGD数量,当池子中USD数量价格减少时,EGDToken价格会下降。计算获得奖励的方法为quota/EGDPrice,即当EGDToken价格下降时,获得奖励会增加,攻击者利用这一漏洞进行攻击,利用闪电贷借出池子中USD,使池子中USD减少,EGDToken价格下降,此时获得奖励增加,将奖励取出后,将借出的USD还给池子,之后将EGDToken兑换为USD。

 

0x5 资金流向

资金由攻击者合约地址转入攻击者地址后目前还未移动

 

总结及建议

通过此次攻击来看,该次攻击核心主要为项目方合约Token价格计算机制过于简单,当USD数量变动较大时EGDToken数量跟着变动,使得攻击者能够通过影响池子中另一个代币数量来影响EGDToken奖励数量。

安全建议

  1. 建议对奖励计算方法进行详细设计
  2. 建议项目方上线前进行多次审计,避免出现审计步骤缺失
(完)