随意操纵数十「兆」代币,Elephant Money攻击事件分析
CertiK
2022-04-14
热度19736

Elephant Money被攻击,导致27,416.46 枚BNB(折合人民币约7198万)遭受损失。

北京时间2022年4月13日凌晨0点49分,CertiK审计团队监测到Elephant Money被攻击,导致27,416.46枚BNB(折合人民币约7198万)遭受损失。

下文CertiK安全团队将从该项目攻击操作及合约等方面为大家详细解读并分析。请大家注意识别风险,谨慎投资!


攻击步骤

攻击者利用了TRUNK代币的赎回机制,通过操纵价格预言机以赎出更多的代币,并从一个Treasury合约中窃取了ELEPHANT。该Treasury合约是一个未经验证的合约。

①攻击者部署了一个攻击者合约,并使用闪电贷从多个pair池中借取了WBNB和BUSD。

②大部分被借来的WBNB被换成了ELEPHANT,以提高ELEPHANT的价格。

③随着ELEPPHANT价格的提高,攻击者的合约触发了Elephant Money中一个未经验证合约(0xd520a3b)的铸币方法。

  • 借贷的BUSD被放置到该合约上,以铸造TRUNK。
  • 部分的BUSD被换成了ELEPHANT。由于ELEPHANT的价格在上一步中被提高了,所以换来的ELEPHANT的数量比预期的要少。
  • 所有的代币(大约6千万的BUSD和3兆的ELEPHANT)被发送到Treasury 合约(0xaf0980a)。

④攻击者合约将ELEPHANT掉包成了WBNB,以降低ELEPHANT的价格。

⑤随着ELEPHANT价格的降低,攻击合约触发了Elephant Money未经验证的合约(0xd520a3b)的赎回。

  • 在步骤③中铸造的TRUNK代币被烧毁。
  • 大约6千万单位的BUSD和64兆单位的ELEPHANT从Treasury合约中被提取出来,发送到攻击者合约中。由于攻击者对价格进行了操纵,提取的ELEPHANT的数量远远大于步骤③中存入的ELEPHANT的数量。

⑥攻击者重复了这个过程,从Treasury合约中盗走了更多的ELEPHANT。⑦随后攻击者将盗窃代币交易卖出,偿还了闪电贷,并从攻击者合约中提取了利润。


合约漏洞分析

未经验证的合约(0xd520a3b)使用Uniswap pair池作为价格预言机,因此预言机可被操纵。

目前总受窃资产约为7198万元人民币。详情请复制链接至浏览器查看:https://twitter.com/PeckShieldAlert/status/1514145304253120515

该次事件可通过安全审计发现相关风险。

使用pair池作为价格预言机导致价格操纵攻击是一个常见问题,因此安全审计可避免类似的风险。

在此,CertiK的安全专家建议:

尽量避免使用流动性低的池子作为价格预言机价格来源,同时对项目进行安全审计从而保证预言机模型的正确性

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96