北京时间2023年5月28日,Jimbos protocol遭受闪电贷攻击,攻击者已获利约750万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
攻击者地址:
0x102be4bccc2696c35fd5f5bfe54c1dfba416a741
攻击合约:
0xd4002233b59f7edd726fc6f14303980841306973
被攻击合约:
0x271944d9D8CA831F7c0dBCb20C4ee482376d6DE7
攻击交易:
0x44a0f5650a038ab522087c02f734b80e6c748afb207995e757ed67ca037a5eda
攻击流程:
1. 攻击者(0x102be4bc)通过闪电贷借取10000 枚ETH。
2. 随后用ETH在交易池中兑换了大量的Jimbo。
3. 攻击者(0x102be4bc)向被攻击合约(0x271944d9)转移了100枚JIMBO代币
4. 调用被攻击合约(0x271944d9)的shift函数。
5. 循环几次上面的操作:
6. 最后将Jimbo兑换为ETH并归还闪电贷,获利离场
漏洞分析:
本次攻击利用了JimboController(0x271944d9)合约中的漏洞,其中的shift函数会让合约执行移除流动性和添加流动性的操作,在添加流动性时JimboController(0x271944d9)合约会发送所有的weth来添加流动性。
攻击者(0x102be4bc)在第二步中使用大量weth换出了流动池中大量的Jimbo币,使池子当中Jimbo的价格很高,这时再调用JimboController(0x271944d9)合约中的shift函数来进行添加流动性的操作,会发送合约中所有的weth到流动池中(包含了合约中原有的weth),这时池子中的weth数量增多但Jimbo的价格仍然很高,攻击者(0x102be4bc)将自己第二步中换出的Jimbo币重新兑换成weth,就可以把池子本身的weth和JimboController(0x271944d9)合约发送的weth一起换出。
事件总结:
本次事件发生原因是由于JimboController(0x271944d9)合约的shift函数中存在漏洞,任何人都可以调用这个函数来使合约为池子添加流动性,并且会发送出合约中所有的weth来添加流动性,无论价格怎么进行操控后都可以用合约来进行接盘。
针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
1. 在开发关于流动性添加和移除函数时,要更加严谨的注意被价格操控的风险。
2. 项目上线前,需要联系第三方专业的审计团队进行智能合约审计。
来源:金色财经