套利约 1300 多万美元,嚣张黑客如何套取 Team Finance 巨额资产?

Beosin2022-10-29 00:01
2022 年 10 月 27 日,据 Beosin EagleEye 安全预警与监控平台检测显示,ETH 链上的 Team Finance 项目遭受黑客攻击。

随后 Team Finance 在官方推文表示,该平台已在漏洞利用后暂停了所有活动,并敦促黑客“与我们联系以支付赏金”。据悉,Team Finance 及其母公司 TrustSwap 成立于 2020 年,他们主要为项目高管提供代币流动性锁定和归属服务。该协议声称在 12 个区块链中获得了 30 亿美元的担保。

Beosin 安全团队通过分析发现黑客通过 LockToken 合约的 migrate 函数的漏洞,将 WTH,CAW,USDC,TSUKA 代币从 V2 流动性池非法升级到 V3 流动性池,并且通过 sqrtPriceX96 打乱 V3 流动池的 Initialize 的价格,从而获取大量 refund 套利。共计套利了约 1300 多万美元。具体分析结果如下:

#事件相关信息


攻击交易

0xb2e3ea72d353da43a2ac9a8f1670fd16463ab370e563b9b5b26119b2601277ce
攻击者地址
0x161cebB807Ac181d5303A4cCec2FC580CC5899Fd
0xBa399a2580785A2dEd740F5e30EC89Fb3E617e6E
攻击合约
0xCFF07C4e6aa9E2fEc04DAaF5f41d1b10f3adAdF4
被攻击合约
0xE2fE530C047f2d85298b07D9333C05737f1435fB

#攻击流程


1.漏洞函数介绍:被攻击合约0xE2fE530C047f2d85298b07D9333C05737f1435fB(LockToken 合约)中 migrate 函数支持用户将指定的 Uniswap-V2 流动性迁移到 Uniswap-V3 流动性,会根据迁移后的价格退还部分代币给用户。函数的所有调用判断如下图所示,对锁定 ID,锁定时间,可提取地址都有判断。
 
migrate 函数条件判断
 migrate函数退款
2.攻击前的准备:攻击者 0x161cebB807Ac181d5303A4cCec2FC580CC5899Fd 首先部署了攻击合约 0xCFF07C4e6aa9E2fEc04DAaF5f41d1b10f3adAdF4 以及创建了代币合约 0x2d4abfdcd1385951df4317f9f3463fb11b9a31df(代币 A)。

3.攻击者前往 LockToken 合约调用其 lockToken 函数,进行了 4 次锁定,锁定的是自己创建的代币 A,并将提取地址设置为攻击合约地址,获得了 4 枚 NFT 作为凭证(id 为 15324,15325,15326,15327)。
 
4 次锁定及 NFT 的 ID
lockToken 函数可以锁定用户的代币,并铸造一枚 NFT 代币作为凭证。锁定代币的类型,锁定数量,由谁提取,锁定时间均可以指定。

4.调用 LockToken 合约中的 extendLockDuration 函数,调整每一枚 NFT 代币所对应的锁定时间。至此,准备已经完成。
 
其中一笔调整锁定时间
5.攻击合约查询 LockToken 合约中的指定 LP 代币的数量,并将返回结果作为攻击参数中的一环。

攻击者调用 migrate 函数,由于事前准备了 NFT 的缘故。migrate 函数关于 id 和锁定时间,提取地址的验证全部被绕过。函数的漏洞一下子暴露出来,验证浮于表面。通过锁定代币 A 获取的 NFT id 竟然可以参与到 FEG-WETH pair 的迁移中,并未检测用户锁定的和正在操作的是否一致,并且与 UNI-V3 迁移价格计算相关的参数 sqrtPriceX96 也是由用户进行输入。

 6.攻击合约使用提前准备的4枚NFT,获得了WETH,DAI,CAW,TSUKA这4种代币的迁移退款。并将其全部发送到0xBa399a2580785A2dEd740F5e30EC89Fb3E617e6E地址。

#漏洞分析


本次攻击主要利用了LockToken合约中migrate函数的漏洞。migrate的验证容易被绕过且可以操纵迁移时的价格。


#资金追踪


截止发文时,被盗资金880.258个ETH,642,9327.6个DAI,74,6136,5757,7043个CAW,1183,7577.7TSUKA,总价值约1300万美元,通过 Beosin Trace 追踪发现目前被盗资金还在攻击者地址0xBa399a2580785A2dEd740F5e30EC89Fb3E617e6E中。


#事件总结

针对本次事件,Beosin 安全团队建议:重要函数的参数校验一定要仔细,尤其是用户可控的参数。项目上线前,建议选择专业的安全审计公司进行全面的安全审计,规避安全风险。

Beosin 作为一家总部位于新加坡的区块链安全公司,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控、预警与阻断、虚拟货币被盗资产追回、安全合规 KYT/AML 等“一站式”区块链安全产品 + 服务,目前已为全球 2000 多个区块链企业提供安全技术服务,审计智能合约超过 2500 份,保护客户资产高达 5000 多亿美元。欢迎点击公众号留言框,与我们联系。






【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

来源链接

相关Wiki

相关标签