2021年08月04日,据慢雾区消息,跨链收益率平台PopsicleFinance的SorbettoFragola产品遭受黑客攻击,慢雾安全团队第一时间介入分析,并将结果分享如下。
攻击背景
在本次攻击中,攻击者通过创建3个攻击合约来完成对SorbettoFragola的攻击,以下是本次攻击涉及的具体地址:
攻击者:
H1:0x3A9D90eD069021057d9d11E78F142F2C4267934A
H2:0xf9E3D08196F76f5078882d98941b71C0884BEa52
攻击合约:
C1:0xdFb6faB7f4bc9512d5620e679E90D1C91C4EAdE6
C2:0x576cf5f8ba98e1643a2c93103881d8356c3550cf
C3:0xd282f740bb0ff5d9e0a861df024fcbd3c0bd0dc8
SorbettoFragola:
0xc4ff55a4329f84f9Bf0F5619998aB570481EBB48
攻击对象
通过官方的介绍我们可以知道被攻击的SorbettoFragola产品主要是用于帮助用户管理UniswapV3头寸,以避免用户在UniswapV3做市的头寸超出所选定的价格范围。用户可以在SorbettoFragola中存入提供流动性对应的两种代币,SorbettoFragola会给到用户PopsicleLP(PLP)凭证,用户使用此凭证可以获取奖励并取回抵押的流动性资金,同时此凭证也是可以随意转移给其他用户的。
知名电竞选手及主播Mongraal获得BAYC铸造型游戏Dookey Dash最高分记录:金色财经报道,据知名电竞选手及主播 @Mongraal 在社交媒体晒出了他的BAYC 铸造型游戏 “Dookey Dash” 分数,截图显示 @Mongraal 获得了 807260 分,是迄今为止该游戏的最高得分记录。需要注意的是,1 月 19 日上线的 “Dookey Dash” 游戏只能玩三周,截止时间是 2 月 8 日,这意味着如果在 2 月 8 日之前没有人能打破 @Mongraal 的记录,他将会获得众多社区用户梦寐以求的猴子吉米钥匙。[2023/1/30 11:36:34]
攻击核心
此次攻击的核心在于,SorbettoFragola中通过用户持有的PLP凭证数量来参与计算用户所能获得的奖励,但PLP凭证是可以随意转移给其他用户的,但其凭证转移的过程中没有进行奖励结算转移等操作。这就导致了只要持有PLP凭证就可以立即获取奖励。最终造成同个PLP凭证却能在同个时间节点给多个持有者带来收益。接下来我们对整个攻击细节进行详细分析。
攻击细节
攻击首先通过H1地址创建了攻击合约C1、C2与C3,随后攻击者通过H2地址调用了攻击合约C1开始进行具体的攻击,交易为:
0xcd7dae143a4c0223349c16237ce4cd7696b1638d116a72755231ede872ab70fc。
外媒:FTX巴哈马公司仅在9个月内就在酒店、食品和旅游方面花费近4000万美元:1月9日消息,据Insider援引破产法庭文件披露,FTX的巴哈马公司仅在9个月内就在酒店、食品和旅游方面花费近4000万美元。其中超过1500万美元用于豪华酒店和住宿,580万美元用于度假胜地奥尔巴尼酒店(SBF和其他FTX、Alameda员工居住的豪华公寓大楼),约360万美元用于四星级酒店君悦酒店,还有80万美元花在五星级的瑰丽度假村,近700万美元用于餐饮和娱乐,其中约一半用于餐饮服务,近400万美元用于航班,超过50万美元用于邮资和送货。此外,律师还指出,加密货币交易所的巴哈马公司FTX Digital Markets在此期间没有产生任何客户收入。
该公司还为巴哈马员工提供了“为所有员工提供的全套汽车和汽油,以及前往全球任何办公室的无限制、全额费用旅行”。另据技术跟踪网站Growjo的数据,在申请破产之前,FTX拥有大约1310名员工,这意味着在九个月内,每位员工平均花费近12,000美元在酒店上。[2023/1/9 11:02:26]
通过分析此交易我们可以发现,其先从AAVE中利用闪电贷借出了30,000,000个USDT、13,000个WETH、1,400个WBTC、30,000,000个USDC、3,000,000个DAI、200,000个UNI,为后续在SorbettoFragola中提供流动性获得PLP凭证做准备。
随后攻击者调用SorbettoFragola合约的deposit函数存入提供流动性对应的两种代币(这里以攻击者首次存入的WETH与USDT代币为例),其会先通过checkDeviation与updateVault修饰器分别检查价格与更新奖励。价格检查主要是针对价格是否出现大波动被操控等情况,这里不做展开。而奖励更新就与本次攻击密切相关了,我们切入分析:
百事可乐首开元宇宙概念发布会:推出限定AR体验罐:金色财经报道,百事可乐近日在成都举行首个元宇宙概念发布会,这标志着百事正式步入元宇宙时代。据悉,百事可乐无糖打造了一个虚实相生的互动空间,象征打破现实与虚拟的隔阂,营造穿梭在过去、当下和未来的沉浸式感官体验。此外,百事联手知名数字艺术家SHANE FU打造的视觉化空间实景还原了限量数字藏品之一《灵动新境》的梦幻氛围感并推出限定AR体验罐,百事家族虚拟偶像团体TEAM PEPSI也首次线下亮相。[2022/11/26 20:48:18]
可以看到其调用了_updateFeesReward函数进行具体的更新操作,我们跟进此函数:
从上图我们可以很容易的发现其先通过positionLiquidity函数获取tickLower与tickUpper范围内合约所持有的流动性数量。然后通过_earnFees函数从UniswapV3Pool中收取提供流动性奖励。之后再通过_tokenPerShare函数计算每个PLP凭证所能分得的流动性奖励。最后通过_fee0Earned与_fee1Earned函数来计算用户所持有的PLP凭证数量可以获得多少奖励,并使用
user.token0Rewards与user.token1Rewards变量进行记录,如下图所示:
但由于此时攻击者刚进行充值操作,还未获得PLP凭证,因此其user.token0Rewards与user.token1Rewards变量最终记录的自然是0。
NFT和Web3项目管理公司Metag3ncy完成400万美元融资:金色财经报道,NFT和Web3项目管理公司Metag3ncy宣布完成400万美元融资,截至目前的融资总金额已达到1200万美元,该公司旨在将业务拓展到亚洲市场。Metag3ncy主要为品牌商开发NFT/元宇宙项目提供支持,帮助公司、协会、艺术家、网络企业家和个人制定战略、开发、平面设计、智能合约、指导和发布。(einnews)[2022/7/8 1:59:22]
看到这里你可能已经意识到问题所在了,既然user.token0Rewards与user.token1Rewards变量记录的奖励是根据用户持有的PLP凭证进行计算的,且PLP凭证是可以转移的,那么是否只要持有PLP凭证再去触发此变量记录奖励就可以让我们获得奖励。答案自然是肯定的。我们继续看deposit函数:
在奖励更新之后通过liquidityForAmounts函数计算出在目标价格区间内用户提供资金所占的流动性然后调用UniswapV3Poolmint函数注入流动性。随后通过_calcShare计算出SorbettoFragola所需要铸造给用户的PLP凭证数量。
在攻击者获得PLP凭着后也正如我们所想的那样将PLP凭证转移给其他地址,并调用SorbettoFragola合约collectFees函数来进行奖励记录。
通过上图的PLP凭证链上转移记录我们可以看到,在攻击合约C1获得PLP凭证后,将其转移给了攻击合约C2,随后调用了collectFees函数。之后攻击合约C2再将PLP凭证转移给攻击合约C3再次调用了collectFees。最后攻击合约C3将PLP凭证转移回攻击合约C1。我们切入collectFees函数进行分析:
DeFi协议总锁仓量跌至750.56亿美元,近24小时内跌超5%:金色财经消息,据Defi Llama数据显示,DeFi协议总锁仓量(TVL)跌至750.56亿美元,近24小时跌幅为5.32%。[2022/6/18 4:35:57]
通过上图我们可以很容易的看出此函数也有updateVault修饰器,而经过上面的分析我们可以知道updateVault修饰器用于奖励更新,因此在攻击合约C2持有PLP凭证的情况下调用collectFees函数触发updateVault修饰器则会根据其持有的PLP凭证数量来计算应分得的奖励,并记入用户的token0Rewards与token1Rewards变量。需要注意的是此时对于此类PLP凭证持有者缓存的tokenPerSharePaid变量是0,这直接导致了用户可以获得PLP凭证持有奖励。
我们从链上状态的变化也可以看出:
随后攻击合约C2也如法炮制即可获得奖励记录。
最后PLP凭证转移回到攻击合约C1,并调用了SorbettoFragola合约的withdraw函数燃烧掉PLP凭证取回先前存入的WETH与USDT流动性。并且攻击合约C2、C3分别调用collectFees函数传入所要领取的奖励数量以领取奖励。这样攻击者在同个区块中不仅拿回了存入的流动性还额外获得多份流动性提供奖励。
随后攻击者开始利用其他的代币对如法炮制的薅取奖励,如下图所示:
攻击流程
1、攻击者创建多个攻击合约,并从AAVE中利用闪电贷借出大量的代币;
2、攻击者使用借来的代币存入SorbettoFragola合约中获得PLP凭证;
3、攻击者利用SorbettoFragola合约的奖励结算缺陷问题将获得的PLP凭证在其创建的攻击合约之间进行转移并分别调用了SorbettoFragola合约的collectFees函数来为各个攻击合约纪录奖励;
4、攻击者燃烧PLP凭证取回在SorbettoFragola合约中存入的流动性资金,并通过各个攻击合约调用SorbettoFragola合约的collectFees函数来获取纪录的奖励;
5、不断的循环上述操作攻击各个流动性资金池薅取奖励;
6、归还闪电贷获利走人。
MistTrack分析过程
慢雾AML团队分析统计,本次攻击损失了约4.98MUSDT、2.56KWETH、96WBTC、5.39MUSDC、159.93KDAI、10.49KUNI,接近2100万美元。
资金流向分析
慢雾AML旗下MistTrack反追踪系统分析发现,攻击者H1地址首先从Tornado.Cash提币获取初始资金随后部署了三个攻击合约:
攻击获利后通过UniswapV3将获得的代币兑换成ETH再次转入了Tornado.Cash:
目前攻击者账户余额仅为0.08ETH,其余资金均已通过Tornado.Cash进行转移。
总结
本次漏洞的核心在于由于奖励更新记录缺陷导致同个PLP凭证能在同个时间节点给多个持有者都带来收益。针对此类漏洞,慢雾安全团队建议在进行凭证转移前应处理好奖励结算问题,记录好转移前后用户的奖励缓存,以避免再次出现此类问题。
参考攻击交易:
https://etherscan.io/tx/0xcd7dae143a4c0223349c16237ce4cd7696b1638d116a72755231ede872ab70fc
往期回顾
科普|加密货币,你中招了吗?(下)
慢雾招募令,加入未来的安全独角兽
梅开二度——PancakeBunny被黑分析
科普|加密货币,你中招了吗?(上)
假币的换脸戏法——技术拆解THORChain跨链系统“假充值”漏洞
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist_team
Medium
https://medium.com/@slowmist
币乎
https://bihu.com/people/586104
知识星球
https://t.zsxq.com/Q3zNvvF
火星号
http://t.cn/AiRkv4Gz
链闻号
https://www.chainnews.com/u/958260692213.htm
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
慢雾科技
现已在非小号资讯平台发布68篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10225373.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
比尔·盖茨再谈ChatGPT:将改变我们的世界!
巴比特讯,8月4日消息,Layer0扩展项目Marlin宣布,OpenWeaver和Flowmint2.0已上线以太坊扩容方案Polygon.
1900/1/1 0:00:00作者:美国SEC主席GaryGensler翻译:吴说区块链下文为美国SEC主席GaryGensler在AspenSecurityForum上的讲话,刊登时间为8月3日:谢谢你的介绍.
1900/1/1 0:00:00AOFEX周报为您汇总平台近期热点,助您快速了解平台动态,官方消息一手掌握。上周AOFEX上线了MBOX、ILV、GHST、REVV、SPS、YGG、CLV、XNFT等热门币种,并举办了多样化、.
1900/1/1 0:00:00尊敬的用户:应项目方要求,币虎将于2021年8月5日18:00下线SAFEGALAXY/USDT,SAFEGALAXY/SUSDT.
1900/1/1 0:00:00尊敬的XT用户:XT即将上线REL,并在创新区开放REL/USDT交易对。具体开通时间,请关注后续公告。REALNANCEToken是JXCC基于以太坊开发的去中心化数字资产.
1900/1/1 0:00:00巴比特讯,8月2日,加密钱包ZenGo团队联合推出了基于门限加密的协议,以实现比特币闪电网络在物联网领域的小额支付应用,该协议可使物联网设备通过比特币闪电网络中不受信任的网关来执行闪电网络操作.
1900/1/1 0:00:00