只要票数足够多,恶意提案也可卷走数亿资产!Beanstalk Farm 攻击事件分析_陀螺科技

摘要:北京时间2022年4月17日,CertiK审计团队监测到Beanstalk协议被恶意利用,导致24,830 ETH和36,398,226 BEAN遭受损失。

北京时间2022年4月17日,CertiK审计团队监测到Beanstalk协议被恶意利用,导致24,830 ETH和36,398,226 BEAN遭受损失。攻击者创建了一个恶意提案,通过闪电贷获得了足够多的投票,并执行了该提案,从而从协议中窃取了资产。目前,攻击者已将所有的ETH(约4.7亿人民币)转移到了Tornado Cash。

攻击步骤

攻击前黑客的准备行动:

攻击者将一些BEAN代币存入Beanstalk,用以创建恶意提案 InitBip18。该提案一旦生效,将把协议中的资产转移给攻击者。

正式发起攻击流程:

①攻击者闪电贷了3.5亿Dai、5亿USDC、1.5亿USDT、3200万Bean和1160万LUSD。

②闪电贷的资产被转换为795,425,740 BEAN3Crv-f和58,924,887 BEANLUSD-f。

③攻击者将步骤中获得的所有资产存入Diamond合约,并投票给恶意的BIP18提案。

④函数emergencyCommit()被立即调用以执行恶意的BIP18提案。

⑤在步骤3和4之后,攻击者能够窃取合约中的36,084,584 BEAN, 0.54 UNIV2(BEAN-WETH), 874,663,982 BEAN3Crv及60,562,844 BEANLUSD-f。

⑥攻击者利用在步骤5中窃取的资产来偿还闪电贷,并获得了其余的24,830 WETH和36,398,226 BEAN作为利润。

漏洞分析

该漏洞的根本原因:

Silo系统中用于投票的BEAN3Crv-f和BEANLUSD-f可以通过闪电贷获得。然而,由于Beanstalk协议中缺乏反闪电贷机制,攻击者可以借用该协议所支持的众多代币从而为恶意提案投票

攻击者如何绕过验证:

为了通过 emergencyCommit() 执行提案,攻击者需要绕过以下验证。

  • 验证一:确保BIP被提出后,有24小时的窗口期。

  • 验证二:确保对某一特定BIP的投票比例不低于阈值,即⅔。

由于BIP18提案是在一天前创建,因此验证一可被绕过;通过闪电贷,BIP18提案获得了78%以上的投票,超过了67%,因此绕过了验证二。

免责声明

本文观点仅代表作者个人观点,不构成本平台的投资建议,本平台不对文章信息准确性、完整性和及时性作出任何保证,亦不对因使用或信赖文章信息引发的任何损失承担责任
上一篇

多链生态百花齐放 速览新晋崛起的DEX协议

下一篇

天眼晚报 | 加密交易所Exmo出售业务并退出俄罗斯和白俄罗斯市场