2022年4月17日,成都链安链必应-区块链安全态势感知平台舆情监测显示,算法稳定币项目Beanstalk Farms遭黑客攻击,黑客获利近8000万美元,成都链安技术团队第一时间对事件进行了分析,结果如下。
#1 事件相关信息
攻击交易
0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7
攻击者地址
0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4
攻击合约
0x79224bC0bf70EC34F0ef56ed8251619499a59dEf
被攻击合约
0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5
#2 攻击流程
1. 攻击者从攻击的前一天发起了提案交易,提案通过会提取Beanstalk: Beanstalk Protocol合约中的资金。
2. 黑客通过闪电贷换取了350,000,000个DAI,500,000,000个USDC,150,000,000个USDT,32,100,950个BEAN和11,643,065个LUSD作为资金储备。
3. 黑客将2步骤的DAI,USDC,USDT资金在Curve.fi DAI/USDC/USDT交易池中添加为979,691,328个3Crv流动性代币,用15,000,000个3Crv换来15,251,318个LUSD。
4. 将964,691,328个3Crv代币兑换为795,425,740个BEAN3CRV-f用于投票,将32,100,950个BEAN和26,894,383LUSD添加流动性得到58,924,887个BEANLUSD-f流动性代币。
5. 使用4步骤中的BEAN3CRV-f和BEANLUSD-f来对提案进行投票,导致提案通过。从而Beanstalk: Beanstalk Protocol合约向攻击合约转入了36,084,584个BEAN,0.54个UNI-V2,874,663,982个BEAN3CRV-f以及60,562,844个BEANLUSD-f。
6. 最后攻击者将流动性移除并归还闪电贷,把多余的代币兑换为24830个ETH转入攻击者账户中。
#3 漏洞分析
本次攻击主要利用了投票合约中的票数是根据账户中的代币持有量得到的。
攻击者至少在一天前发起提取Beanstalk: Beanstalk Protocol资金的提案,然后调用emergencyCommit进行紧急提交来执行提案,这个就是攻击者1天之前发起攻击准备的原因所在。
#4 资金追踪
截止发文时,攻击者获利22029601 个USDC ,14742429个 DAI,6,603,829个USDT与0.5407个UNI-V2,640224美元的BAEN代币资金近8000万,在攻击时将其中的25万USDC捐赠了乌克兰,之后攻击者将资金转换为ETH并将资金持续向Tornado.Cash转移。
针对本次事件,成都链安技术团队建议:
1. 投票所用资金应在合约中锁定一定时间,避免使用账户的当前资金余额来统计投票数量,以避免可能出现的反复投票以及使用闪电贷进行投票;
2. 项目方和社区应关注所有提案,如果提案是恶意提案,建议在提案投票期间应及时做出处理措施,将提案废弃,禁止其接受投票以及执行;
3. 可考虑禁止合约地址参与投票;此外项目上线前最好进行全面的安全审计,规避安全风险。