2022 年 10 月 27 日,据 Beosin-Eagle Eye 态势感知平台消息,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,锁定时间,可提取地址都有判断。


2.攻击前的准备:攻击者 0x161cebB807Ac181d5303A4cCec2FC580CC5899Fd 首先部署了攻击合约 0xCFF07C4e6aa9E2fEc04DAaF5f41d1b10f3adAdF4 以及创建了代币合约 0x2d4abfdcd1385951df4317f9f3463fb11b9a31df(代币 A)。
3.攻击者前往 LockToken 合约调用其 lockToken 函数,进行了 4 次锁定,锁定的是自己创建的代币 A,并将提取地址设置为攻击合约地址,获得了 4 枚 NFT 作为凭证(id 为 15324,15325,15326,15327)。

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 安全团队建议:重要函数的参数校验一定要仔细,尤其是用户可控的参数。项目上线前,建议选择专业的安全审计公司进行全面的安全审计,规避安全风险。
(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)