SharkTeam:KyberSwap攻击事件原理分析

  • SharkTeam
  • 更新于 2023-11-27 15:49
  • 阅读 1607

2023年11月23日,因为Tick操纵和流动性重复计数,KyberSwap在以太坊、Arbitrum等多个网络上受到黑客攻击,攻击者已获利约4800万美元。SharkTeam对此事件第一时间进行了技术分析

2023年11月23日,因为Tick操纵和流动性重复计数,KyberSwap在以太坊、Arbitrum等多个网络上受到黑客攻击,攻击者已获利约4800万美元。

SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、攻击交易分析

这次攻击事件比较复杂,攻击实现也比较巧妙,我们选择其中一笔攻击交易进行详细分析和说明。

攻击交易: 0x09a3a12d58b0bb80e33e3fb8e282728551dc430c65d1e520fe0009ec519d75e8

攻击者地址: 0x50275E0B7261559cE1644014d4b78D4AA63BE836

攻击者合约: 0xaF2Acf3D4ab78e4c702256D214a3189A874CDC13

在这次交易中,攻击者针对3个不同的流动性池进行一系列操作用来耗尽池中的资金。我们选择了一个池进行攻击流程分析,这些池彼此独立存在。

攻击流程:

1.攻击者先是通过闪电贷贷了10,000枚wstETH,随后将约2,998 枚wstETH添加进池子里,swap出来约 2,842枚WETH;

2.此时池子里对应的Tick状态为-110,910,wstETH 的价格从1.05 ETH 变为0.000015257。此时池子的流动性为0,为接下来制造虚假的流动性做铺垫;

3.攻击者在[0.000014659,0.000015260]范围中添加3.4 wstETH流动性,并且移除0.56 wstETH;

4.接下来,攻击者进行两次swap,分别是WETH->wstETH、wstETH->WETH。第一次swap后,将价格压至0.000014657,比0.000014659稍微低点。第二次swap后,将价格抬高至0.000016368;

5.一开始是池子里有约为3 wstETH流动性(mint3.4 wstETH - burn0.56 wstETH),现在池子里约为(1,056 + 3,911)枚,显然更多;

6.攻击归还闪电贷后,并且从攻击合约转走资金

二、漏洞原因分析

本次攻击事件根本原因:在computeSwapStep函数中,计算Tick时存在精度损失。由于Tick可被操纵,成功绕过了_updateLiquidityAndCrossTick函数,因而可以反复增加流动性。

1.在第一次swap中,攻击者利用calcReachAmount函数计算wstETH 数量,最后计算得出1,056.056735638220800000;

2.调用estimateIncrementalLiquidity和calcFinalPrice函数后,传入的数量为1,056.056735638220799999。经过round up和round down处理后,此时Tick为-111311,而下限Tick为 -111310。因此,通过nextTick = currentTick+1,并使用“!=”对两个sqrtP参数进行判断,成功绕过了_updateLiquidityAndCrossTick函数,避免了流动性的更新;

3.在第二次swap时候,调用了_updateLiquidityAndCrossTick,增加了流动性。由于第一次swap时数量计算发生精度损失,导致流动性未更新移除,从而导致第二次计算流动性时出现双倍的情况。

三、安全建议

针对这次的攻击事件,开发人员在日常开发中应采取以下安全措施: 1.注意正确计算业务中的不变量和数学逻辑,避免精度损失。 2.项目发版前,需要与第三方专业的审计团队合作,进行合约审计。

About Us

SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括链上大数据分析、链上风险预警、智能合约审计、加密资产追讨等服务,并打造了链上大数据分析和风险预警平台ChainAegis,平台支持无限层级的深度图分析,能有效对抗Web3世界的高级持续性攻击(Advanced Persistent Threat,APT)风险。已与Web3生态各领域的关键参与者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、ChainIDE等建立长期合作关系。

官网:https\://www.sharkteam.org

Twitter:https\://twitter.com/sharkteamorg

Discord:https\://discord.gg/jGH9xXCjDZ

Telegram:https\://t.me/sharkteamorg

<!--EndFragment-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
SharkTeam
SharkTeam
0xC0f5...8888
SharkTeam是领先的Web3安全服务提供商,提供智能合约审计、链上分析和应急响应服务。 Web: https://www.sharkteam.org Telegram: https://t.me/sharkteamorg Twitter:https://twitter.com/sharkteamorg