事件背景
零时科技区块链安全情报平台监控到消息,北京时间2023年5月28日,Arbitrum链上Jimbos Protocol项目受到黑客攻击,攻击者获利约 776 万美元。
攻击者地址为:
0x102be4bccc2696c35fd5f5bfe54c1dfba416a741
被盗资金通过跨链转移至ETH链后转移至地址:
0x5F3591e2921D5c9291F5b224E909aB978A22Ba7E
零时科技安全团队及时对此安全事件进行分析。
攻击步骤
1. 攻击者通过闪电贷借出 10,000 WETH
2. 攻击者在交易池中使用 WETH 兑换获得大量 JIMBO 代币
3. 攻击者向 JimboController 合约转移 100 JIMBO 代币
4. 攻击者调用 shift 函数更新交易池,将合约中WETH与 JIMBO 代币转移至交易池中,此时JIMBO 代币价格被恶意拉高
5. 攻击者使用更新后的价格进行兑换
6. 攻击者重复上述步骤,几乎将池子掏空后获利离场。
此笔攻击中攻击者共获利约 4,048 ETH,约为 7,763,360 美元
核心漏洞
JimboController合约中shift()函数可以更新交易池流动性,但是此函数中没有限制调用者身份,任何人都可以调用此函数执行更新交易池操作,重新添加流动性时会将合约中的所有余额转移至交易池,并且重新添加流动性时没有对代币价格进行判断,因此攻击者能够将代币价格恶意拉高后通过调用函数使得JimboController合约接盘,从而获利。
资金来源及流向
- 资金来源
攻击地址初始手续费通过跨链转入
- 资金流向
攻击者将获利资金通过跨链合约转移至ETH链对应地址,之后将资金转移至地址 0x5F3591e2921D5c9291F5b224E909aB978A22Ba7E,目前资金仍在此地址未移动。
总结及建议
此次攻击是由于代币价格存在滑点,并且合约中在更新交易池函数中没有用户权限并且没有对于价格滑点进行判断,导致攻击者能够恶意操纵代币价格,并且将合约中ETH也转入交易池后通过代币兑换获利。
安全建议
- 建议对合约中更新交易池函数设置用户权限
- 建议在更新交易池时增加对于代币价格判断的条件,避免出现滑点过大时币价被恶意操纵
- 建议项目方上线前进行多次审计,避免出现审计步骤缺失