損失近2070萬美元 防不勝防?Popsicle Finance被攻擊事件全解析
8月4日,鏈必安-區塊鏈安全態勢感知平臺(Beosin-Eagle Eye)輿情監測顯示,跨鏈收益率提升平臺Popsicle Finance下Sorbetto Fragola產品遭到攻擊,導致了約2070萬美元的損失,攻擊者共獲利2.6K WETH,5.4M USDC,5M USDT,160K DAI,10K UNI,和96 WBTC。
事件概覽
攻擊如何發生 Event overview
首先,跟我們了解一下Popsicle Finance是什么?
這是一個很有意思的項目,主要做跨鏈流動性挖礦。在DeFi 大熱的時候,大家都在找流動性挖礦的機會,希望讓自己的資產收益最大化。但因以太坊主網 gas 費用居高不下,給了二層、側鏈、其他區塊鏈迅速發展壯大的機會。在多鏈時代下,Popsicle Finance就在這樣的背景下誕生了。
在遭到黑客攻擊後,Popsicle Finance團隊成員立即發推表示,目前僅有 Sorbetto Fragola 一款產品受到影響。團隊將在幾周內修復漏洞並對用戶損失進行賠償。
事件具體分析
攻擊者如何得手 Event overview
攻擊者地址:
0xf9E3D08196F76f5078882d98941b71C0884BEa52
攻擊合約:
A:
0xdfb6fab7f4bc9512d5620e679e90d1c91c4eade6
B:
0x576Cf5f8BA98E1643A2c93103881D8356C3550cF
C:
0xd282f740Bb0FF5d9e0A861dF024fcBd3c0bD0dc8
攻擊交易:
0xcd7dae143a4c0223349c16237ce4cd7696b1638d116a72755231ede872ab70fc
攻擊者使用相同的攻擊方式獲利了多種代幣,以下以USDT為例分析:
Round 1
攻擊者使用合約A通過閃電貸獲取USDT和ETH。
Round 2
通過合約A調用SorbettoFragola的deposit函數獲取憑證代幣PLP。
Round 3
將PLP發送給合約B並執行SorbettoFragola的collectFee函數,這時輸入的amount均為0,更新合約B的獎勵參數。之後將PLP發送到合約C,進行同樣的操作。合約C完成操作後將PLP發送回合約A。
因為合約B、C持幣,所以會計算更新其獎勵(不隨代幣轉移清空),更新後的數值如下圖所示:
Round 4
合約A執行SorbettoFragola的withdraw函數,銷毀PLP代幣。取出本金後更新相關參數為最新。
Round 5
接着合約B與合約C再度執行collectfee函數。
輸入的amount為上面更新後的數值tokenReward。
這時因為滿足此處條件,所以會到pool地址(UNIV3的對應交易對地址)去移除流動性,並將代幣發送給合約B、C。
Round 6
合約C再次調用collectfee函數獲利。
此時amount如下圖所示:
最後,滿足調用pay函數的條件,通過pay函數向合約C發送代幣。
事件復盤
我們需要注意什么 Case Review
Popsicle Finance最初管理的是跨鏈流動性,於6月26日推出Sorbetto Fragola 以管理Uniswap v3流動性。
項目方應該也沒有預料到,黑客會在今日進行攻擊,導致了約2070萬美元的損失。可見,安全預判是多么重要。
注意
成都鏈安在此建議,對於項目方而言,在PLP轉移時,應該重新計算並更新PLP發送方與接收方的獎勵值,避免獎勵重復發放。此外,項目的邏輯缺陷一定要得到重視。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。