原标题:《空手套白狼——Popsicle被黑分析》
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)凭证,用户使用此凭证可以获取奖励并取回抵押的流动性资金,同时此凭证也是可以随意转移给其他用户的。
攻击核心
此次攻击的核心在于,SorbettoFragola中通过用户持有的PLP凭证数量来参与计算用户所能获得的奖励,但PLP凭证是可以随意转移给其他用户的,但其凭证转移的过程中没有进行奖励结算转移等操作。这就导致了只要持有PLP凭证就可以立即获取奖励。最终造成同个PLP凭证却能在同个时间节点给多个持有者带来收益。接下来我们对整个攻击细节进行详细分析。
知情人士:英国资管巨头施罗德正在寻找加密货币托管提供商:6月7日消息,据彭博社援引知情人士报道,管理9160亿美元的英国资管巨头施罗德投资集团正在寻找加密货币托管提供商以进入数字资产行业。知情人士称,由渣打银行控股的Zodia Custody是潜在的供应商之一,不过目前属于保密期。
虽然施罗德目前没有任何直接接触加密货币,但施罗德于去年7月购买了数字资产管理公司Forteus的少数股权,从而进军该领域。施罗德当时表示,它计划让客户在适当的时候使用Forteus的功能。此外,施罗德在 3 月份发布的最新年度报告中表示,它正在寻求增加一名在金融科技和加密货币等领域具有经验的董事会成员,以取代即将离任的董事达蒙布菲尼。[2023/6/8 21:22:35]
攻击细节
攻击首先通过H1地址创建了攻击合约C1、C2与C3,随后攻击者通过H2地址调用了攻击合约C1开始进行具体的攻击,交易为:
0xcd7dae143a4c0223349c16237ce4cd7696b1638d116a72755231ede872ab70fc。
通过分析此交易我们可以发现,其先从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修饰器分别检查价格与更新奖励。价格检查主要是针对价格是否出现大波动被操控等情况,这里不做展开。而奖励更新就与本次攻击密切相关了,我们切入分析:
密码管理器KeePass修复允许检索主密码的漏洞:金色财经报道,SlowMist发布安全警报,密码管理器KeePass最近修复了一个允许检索主密码的漏洞。可利用此漏洞从软件内存中检索明文主密码。目前PoC已经公开,暂无补丁。使用本软件的用户注意资产风险。[2023/5/22 15:18:36]
可以看到其调用了_updateFeesReward函数进行具体的更新操作,我们跟进此函数:
马斯克:对未来增持比特币持开放态度:7月21日消息,特斯拉CEO埃隆·马斯克在特斯拉的财报电话会上表示,特斯拉出售比特币是为了改善现金状况,出售加密货币“不是对比特币的裁决”。他还称,对未来增持比特币持开放态度。
马斯克认为,特斯拉的目标是加速可持续能源的到来,而加密货币是“次要事件中的次要事件”。此外,马斯克表示,特斯拉没有出售狗狗币。(金十)[2022/7/21 2:27:20]
从上图我们可以很容易的发现其先通过positionLiquidity函数获取tickLower与tickUpper范围内合约所持有的流动性数量。然后通过_earnFees函数从UniswapV3Pool中收取提供流动性奖励。之后再通过_tokenPerShare函数计算每个PLP凭证所能分得的流动性奖励。最后通过_fee0Earned与_fee1Earned函数来计算用户所持有的PLP凭证数量可以获得多少奖励,并使用
user.token0Rewards与user.token1Rewards变量进行记录,如下图所示:
但由于此时攻击者刚进行充值操作,还未获得PLP凭证,因此其user.token0Rewards与user.token1Rewards变量最终记录的自然是0。
看到这里你可能已经意识到问题所在了,既然user.token0Rewards与user.token1Rewards变量记录的奖励是根据用户持有的PLP凭证进行计算的,且PLP凭证是可以转移的,那么是否只要持有PLP凭证再去触发此变量记录奖励就可以让我们获得奖励。答案自然是肯定的。我们继续看deposit函数:
经济部长辞职后阿根廷投资者寻求加密货币对冲,USDT法币成交量飙升:7月3日消息,阿根廷经济部长Martin Guzman辞职后,该国用阿根廷比索购买Tether的成本在周六飙升。这是总统Alberto Fernandez领导的政府在执政联盟内讧升级后最高级别的离职,政府没有立即任命接替者。
根据CryptoYa网站的价格数据,在部长在Twitter上宣布辞职后不久,以阿根廷比索计价的Tether(USDT)价格在主要交易所大幅上涨,在币安的价格为257阿根廷比索,上涨6.6%,在Lemon Cash交易所上的价格上涨了11%,至279阿根廷比索。
加密货币是周六阿根廷唯一的交易市场。尽管成交量不大,但这一走势可能表明,至少部分交易者对执政联盟内部日益加深的分歧感到不安,并对政府应对通胀上升和其他经济挑战的能力感到担忧。
据Chainalysis称,阿根廷是加密货币使用率最高的九个国家之一。位于布宜诺斯艾利斯的Wunderman Thompson的一项研究显示,在一个货币危机反复出现、通货膨胀率每年约为60%的国家,三分之二的阿根廷人投资加密货币是为了保护自己的储蓄。(彭博社)[2022/7/3 1:47:10]
在奖励更新之后通过liquidityForAmounts函数计算出在目标价格区间内用户提供资金所占的流动性然后调用UniswapV3Pool?mint函数注入流动性。随后通过_calcShare计算出SorbettoFragola所需要铸造给用户的PLP凭证数量。
在攻击者获得PLP凭着后也正如我们所想的那样将PLP凭证转移给其他地址,并调用SorbettoFragola合约collectFees函数来进行奖励记录。
Ship Capital品牌重塑为风险投资基金Protagonist,已募资超3300万美元:金色财经消息,Solana生态DeFi项目Sabre联合创始人Dylan Macalinao和Ian Macalinao将其DeFi开发团队Ship Capital更名为风险投资基金Protagonist,该基金已经筹集了超3300万美元。监管文件显示,“Ship Capital Labs US,LP于2022年1月下旬在美国特拉华州注册,在5月23日提交给美国证券交易委员会(SEC)的文件中将其名称更改为“Protagonist US LP”。
Ship Capital的品牌重塑反映了它从GitHub贡献者合作组织转变为一家风险投资公司,Protagonist旨在建设和投资于定义未来的加密公司和协议,到目前为止,它已支持了Layer One协议Aptos、可编程NFT初创公司Cardinal、新型银行Cogni和去中心化金融平台Delta One。(Coindesk)[2022/6/28 1:35:08]
通过上图的PLP凭证链上转移记录我们可以看到,在攻击合约C1获得PLP凭证后,将其转移给了攻击合约C2,随后调用了collectFees函数。之后攻击合约C2再将PLP凭证转移给攻击合约C3再次调用了collectFees。最后攻击合约C3将PLP凭证转移回攻击合约C1。我们切入collectFees函数进行分析:
通过上图我们可以很容易的看出此函数也有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
据Cointelegraph8月9日消息,加拿大公共艺术展览组织VancouverBiennale正准备推出一个用区块链技术结合物理和数字现实的艺术装置.
1900/1/1 0:00:00据Coindesk9月1日消息,知名NFT及链游开发商DapperLabs已聘请了前Ticketmaster首席信息官GuiKaryo担任该公司的CIO,以扩展公司的基础设施和技术运营.
1900/1/1 0:00:00巴比特讯,据去中心化交易平台KSwap与ASTFinance公告显示,机池项目AST遭遇代码错误,出现无法赎回WOKT的情况,其机池内锁仓约67660.4枚OKT,当前价值约580万美元.
1900/1/1 0:00:00前言: DAOs是一种新的物种还是公司治理的特殊形式?信任与所有权、控制权是最好的说明。但IT治理的最初提出者Weill和Ross,在考虑和设计公司完全由IT治理时的可能性时,却完全没有意识到某天DAOs的出现,使得这种可能完全成为现.
1900/1/1 0:00:00据上海静安官方公众号8月23日消息,在静安区新闻办举行的“静安区‘双创’示范基地创建工作媒体通气会”上公布了“上海静安国际创新走廊”建设成果,同时确定了未来五年建设重点任务.
1900/1/1 0:00:00随着EIP1559的部署,我们每天都会在各大加密媒体上看到ETH销毁量的报道。就在今天,总销毁的ETH数量已经超过5万个.
1900/1/1 0:00:00