北京时间6月28日,Themis protocol遭受闪电贷攻击,攻击者已获利约37万美元。
(资料图片仅供参考)
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
攻击者地址:
0xdb73eb484e7dea3785520d750eabef50a9b9ab33
攻击合约:
0x05a1b877330c168451f081bfaf32d690ea964fca
0x33f3fb58ea0f91f4bd8612d9f477420b01023f25
被攻击合约:
0x75f805e2fb248462e7817f0230b36e9fae0280fc
攻击交易:
0xff368294ccb3cd6e7e263526b5c820b22dea2b2fd8617119ba5c3ab8417403d8
攻击流程:
(1)攻击者(0xdb73eb48)通过闪电贷借取22000 枚WETH。
(2)随后再从uniswapV3Pool中再借出了10000和8000个WETH
(3)然后攻击者(0xdb73eb48)通过存入220个WETH,分别借出DAI,USDT,USDC,ARB,WBTC。
(3)然后攻击者(0xdb73eb48)取出55eth,创建新合约(0x33f3fb58)。
(5)攻击者(0xdb73eb48)把55个WETH加入池子,获得54.6个wstETH:
(6)攻击者(0xdb73eb48)调用swap函数,将39725个WETH全部兑换成了2423wsteth。
(7)然后在wsteth价格很高的情况下只使用54.6个wstETH就借出了317个WETH
最后攻击者(0xdb73eb48)将wstEth重新换回WETH,归还闪电贷,获利离场。
本次攻击的本质是利用闪电贷对池子中两个token的价格进行操纵,预言机计算比例可以被操纵,导致资产损失。攻击者前三步是将WETH兑换为多种代币的同时也将WETH存入了池子中,使池子的WETH余额变多,最后关键步骤是第六步,将三万多个WETH进行兑换,使得池子中wstEth与WETH的比例出现严重问题,使预言机计算出的兑换比例上升,实现少量wstEth借出更多的WETH。
可以看到在使用WETH兑换wstEth后,计算结果出现明显的增加。
针对本次攻击事件,开发者在开发过程中应遵循以下注意事项:
(1)在开发预言机和流动池时,严格校验是否存在价格操纵问题。
(2)推荐在预言机中使用时间加权算法(TWAP)来计算token价格。
(3)项目上线前,需要向第三方专业的审计团队寻求技术帮助。
SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
官网:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg