POPSICLE FINANCE - 翻车



融化。

大约2000万就这么没了。

一起因为简单漏洞引发的复杂攻击让Popsicle Finance陷入了困境。

RewardDistribution漏洞已经在其他几个协议中被利用好几次了。

审计员和智能合约开发人员需要及时更新。这段代码不应该出现在当前的生产环境中。

如果有地方能让他们读到以前黑客和漏洞的案例就好了......

来源:@Peckshield@Mudit__Gupta

攻击者地址0xf9E3D08196F76f5078882d98941b71C0884BEa52

交易哈希0xcd7dae143…

"Sorbetto Fragola"合约自动管理Uniswap V3的流动性。Fragola调整头寸,使其始终处于正确的范围内。

黑客攻击的原因是在转移LP代币时缺乏适当的费用核算。

具体来说,攻击者创建了三个合同。A、B和C,并按照下列顺序重复:

A.deposit()。

A.transfer(B)。

B.collectFees()。

B.transfer(C)。

C.为8个池子 collectFees()。

第1步:从Aave闪电贷出30M USDT, 13K WETH, 1.4KBTC, 30M USDC, 3M DAI和200K UNI,以攻击8个PLP池。

下面我们以USDT-WETH池为例。

第2步:A调用deposit()将3千万USDT和5467WETH流动性添加到USDT-WETH PLP池中,得到10.51个PLP代币。

第3步:A将10.52个PLP代币转给B

第4步:B调用collectFees()函数以获得其tokenRewards的更新。

第5步:B将10.52个PLP代币转给C

第6步:C调用collectFees()函数来更新其tokenRewards。

第7步:C将10.52个PLP代币转回给A,这样A就可以在以后撤走流动资金。

第8步:A调用withdraw()来移除流动性,并取回3千万USDT和5467WETH。

第9步:B调用collectFees()获得215万USDT和392WETH作为奖励。

第10步: C调用collectFees()获得215万USDT和402WETH作为奖励。

第11步:攻击者对其他几个PLP池重复第2至10步,并偿还第1步的闪电贷。

攻击的部分利润(4100ETH,约1000万美元)被立即存入Tornado Cash

在撰写本文时,剩余的 2560 WETH、96 WBTC 和 159928 DAI 仍在攻击者账户中:0xf9E3D08196F76f5078882d98941b71C0884BEa52

每个人都会犯错,但没有多少人对2000万美元的TVL负责......

奇怪的是,Peckshield决定公布他们审计过代码项目的事后报告,而不是等待或者从Popsicle账户的官方发布。

另一个客户的资金损失,而Peckshield在Twitter上凭此获取影响力。

审计人员没有什么理由错过一个已经知道的错误。

不过,他们确实写了一份不错的事后报告,所以至少Popsicle Finance得到了一些回报。


分享本文

REKT作为匿名作者的公共平台,我们对REKT上托管的观点或内容不承担任何责任。

捐赠 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

声明:

REKT对我们网站上发布的或与我们的服务相关的任何内容不承担任何责任,无论是由我们网站的匿名作者,还是由 REKT发布或引起的。虽然我们为匿名作者的行为和发文设置规则,我们不控制也不对匿名作者在我们的网站或服务上发布、传输或分享的内容负责,也不对您在我们的网站或服务上可能遇到的任何冒犯性、不适当、淫秽、非法或其他令人反感的内容负责。REKT不对我们网站或服务的任何用户的线上或线下行为负责。