建议项目方增强价格预言机的抗操纵能力,设计更为安全的预言机喂价机制。
作者:Doris,慢雾安全团队
背景
2024 年 6 月 10 日,据慢雾 MistEye 安全监控系统监测,EVM 链上提供数字资产借贷服务的平台 UwU Lend 遭攻击,损失约 1,930 万美元。慢雾安全团队对该事件展开分析并将结果分享如下:
相关信息
攻击者地址:
0x841ddf093f5188989fa1524e7b893de64b421f47
存在漏洞的合约地址:
0x9bc6333081266e55d88942e277fc809b485698b9
攻击交易:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
攻击核心
本次攻击的核心点在于攻击者可以通过在 CurveFinance 的池子中进行大额兑换直接操纵价格预言机,影响 sUSDE 代币的价格,并利用被操纵后的价格套出池子中的其他资产。
攻击流程
1. 闪电贷借入资产并砸低 USDE 的价格:攻击者首先通过闪电贷借入大量资产,并在可以影响 sUSDE 价格的 Curve 池子中将借来的部分 USDE 代币兑换成其他代币。
2. 大量创建借贷头寸:在当前 sUSDE 价格大跌的情况下,通过存入其他底层代币大量借出 sUSDE 代币。
3. 再次操纵预言机拉高 sUSDE 的价格:通过在之前的 Curve 池子中进行反向兑换操作,将 sUSDE 的价格迅速拉高。
4. 大量清算负债头寸:由于 sUSDE 的价格被迅速拉高,使得攻击者可以大量清算之前借款的头寸来获得 uWETH。
5. 存入剩余的 sUSDE 并借出合约中的其他底层代币:攻击者再次存入当前处于高价的 sUSDE 来借出更多的底层资产代币获利。
不难看出,攻击者主要是通过反复操纵 sUSDE 的价格,在低价时进行大量的借款,而在高价时进行清算和再抵押获利。我们跟进到计算 sUSDE 价格的预言机合约 sUSDePriceProviderBUniCatch 中:
可以看出 sUSDE 的价格是先从 CurveFinance 上的 USDE 池子和 UNI V3 池子获取 11 个 USDE 代币的不同价格,再根据这些价格进行排序和计算中位数来确定的。
而在这里的计算逻辑中,其中 5 个 USDE 的价格是直接使用 get_p 函数获取 Curve 池子的即时现货价格,这才导致了攻击者可以在一笔交易内以大额兑换的方式直接影响价格中位数的计算结果。
MistTrack 分析
据链上追踪工具 MistTrack 分析,攻击者 0x841ddf093f5188989fa1524e7b893de64b421f47 在此次攻击中获利约 1,930 万美元,包括币种 ETH, crvUSD, bLUSD, USDC,随后 ERC-20 代币均被换为 ETH。
通过对攻击者地址的手续费溯源,查询到该地址上的初始资金来自 Tornado Cash 转入的 0.98 ETH,随后该地址还接收到 5 笔来自 Tornado Cash 的资金。
拓展交易图谱发现,攻击者将 1,292.98 ETH 转移至地址 0x48d7c1dd4214b41eda3301bca434348f8d1c5eb6,目前该地址的余额为 1,282.98 ETH;攻击者将剩下的 4,000 ETH 转移至地址 0x050c7e9c62bf991841827f37745ddadb563feb70,目前该地址的余额为 4,010 ETH。
MistTrack 已将相关地址拉黑,并将持续关注被盗资金的转移动态。
总结
本次攻击的核心在于攻击者利用价格预言机的直接获取现货即时价格和中位数计算价格的兼容缺陷来操纵 sUSDE 的价格,从而在严重价差的影响下进行借贷和清算来获取非预期的利润。慢雾安全团队建议项目方增强价格预言机的抗操纵能力,设计更为安全的预言机喂价机制,避免类似事件再次发生。
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。