比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

TOKEN:[虛擬印鈔機] Popsicle Finance 雙花攻擊分析

Author:

Time:1900/1/1 0:00:00

北京時間2021年8月4日早上6點,PopsicleFinance項目下的多個機槍池被攻擊,損失金額超過兩千萬美元,是迄今為止DeFi領域發生的損失數額最大的單筆攻擊之一。通過分析攻擊交易及項目代碼我們發現,此次攻擊是一個利用項目的記賬漏洞進行多次提取的攻擊。下面我們通過代碼和攻擊流程分析此次攻擊。

代碼分析

PopsicleFinance是一個涉及多個鏈的機槍池。

用戶首先調用deposit函數向機槍池存入一定的流動性,并獲得PopsicleLPToken作為存款的份額證明。PopsicleFinance會將用戶提供的流動性存入Uniswap等底層池子并獲得收益。

用戶還可以調用withdraw函數,根據用戶持有的PLPToken所代表的流動性份額,從機槍池取回流動性。PopsicleFinance會將PLPToken對應的流動性從Uniswap等底層池子中取回給用戶。

最后,用戶在機槍池中存的流動性會隨著時間產生一定的收益,會累計在合約的用戶狀態中。用戶可以調用collectFees函數取回部分存款獎勵。

數據:比特幣保證金合約目前占期貨未平倉合約總額的33%:金色財經報道,Glassnode數據顯示,比特幣保證金合約目前占期貨未平倉合約總額的33%,高于7月份的20%?。現金或穩定幣保證金合約仍占未平倉合約總額的65%。

研究提供商Blockware Intelligence表示,人們對BTC保證金合約的興趣重新燃起,意味著可能會出現引發波動性的聯級清算。當多次清算(或由于保證金短缺而強制平倉)連續發生,導致價格快速變化時,就會發生這種情況。[2023/9/4 13:16:53]

本次攻擊的核心函數正是collectFees函數。下面我們逐步分析其代碼。首先獲得存儲在userInfo中的用戶狀態。其中用戶狀態中的token0Rewards和token1Rewards是由于用戶存款而累積的獎勵。

接下來計算該合約中,對應機槍池的Token對的Balance。如果在合約中有足夠的Balance,就按金額將Reward支付給用戶;否則會調用pool.burnExactLiquidity從底層pool取回流動性返回給用戶。

美聯儲埃文斯:預計明年利率將升至4%:9月9日消息,美聯儲埃文斯表示,當前通脹遠高于6月時的預期。預計明年利率將升至4%,這將是一條“強有力的”加息路徑。預計美國有能力將失業率保持在4.5%以下。美國有很大的幾率不陷入經濟衰退,但擔心意外或突發狀況的發生。[2022/9/9 13:17:57]

最后,會將記錄在userInfo中的Rewards狀態進行更新。看到這里,機槍池的代碼實現還是比較符合邏輯的。但是在函數開頭我們發現了updateVaultmodifier,這個函數會在collectFees的函數體之前運行,漏洞也許在updateVault相關的函數中。

以上是updateVault相關函數的實現。過程如下:

首先調用_earnFees向底層pool獲取積累的Fee;

隨后調用_tokenPerShare更新token0PerShareStored和token1PerShareStored參數,這兩個參數代表了池子中每個share代表的token0和token1的數量,即機槍池的每個份額計代表的Token對數量;

LTC跌破83美元關口 日內跌幅為8.93%:火幣全球站數據顯示,LTC短線下跌,跌破83美元關口,現報82.98美元,日內跌幅達到8.93%,行情波動較大,請做好風險控制。[2020/12/2 22:48:39]

最后調用fee0Earned和fee1Earned更新對應到這個用戶的存款Rewards。

以上是fee0Earned和fee1Earned函數的實現,兩個函數實現相同,都實現了這樣一個公式:

user.token0Rewards=PLP.balanceOf(account)*(fee0PerShare-user.token0PerSharePaid)/1e18

也就是說,該函數會在原有的user.token0Rewards基礎上,根據用戶擁有的PLPToken數量計算應給用戶發放的Fee的份額。

但我們注意到這個函數是增量的,也就是說即使用戶并沒有持有PLPToken,該函數仍會返回保存在user.token0Rewards中記賬的存款獎勵。

BCH在2分鐘內跌幅超過1.00%:據火幣全球站數據顯示,BCH/USDT在2分鐘內出現劇烈波動,跌超1.00%,達到-1.07%。當前報價為226.39美元,行情波動較大,請注意風險控制。[2020/4/12]

因此對于整個合約,我們發現兩個重要的邏輯缺陷:

用戶的存款獎勵是記錄在user.token0Rewards和user.token1Rewards中的,并不與任何PLPToken或其他東西有任何形式的綁定。

用于取回存款收益的collectFees函數僅僅依賴于記賬的user.token0Rewards和user.token1Rewards狀態,即使用戶并未持有PLPToken,仍可以取出對應的存款獎勵。

我們假想一個攻擊流程:

攻擊者向機槍池中存入一定的流動性,獲得一部分PLPToken。

攻擊者調用collectFees(0,0),后者會更新攻擊者的存款獎勵,即狀態變量user.token0Rewards的值,但并沒有真正取回存款獎勵。

行情 | ETH 1小時跌幅超過2.50%:據Bitfinex數據顯示,ETH 現報價115.01美元,1小時內跌幅超過2.50%,波動較大,請做好風險控制[2018/12/21]

攻擊者將PLPToken轉給自己控制的其他合約,再調用collectFees(0,0)更新狀態變量user.token0Rewards。也就是說通過不斷地流轉PLPToken并調用collectFees(0,0),攻擊者復制了這些PLPToken對應的存款獎勵。

最后,攻擊者從以上各個地址調用collectFees函數,取回真正的獎勵。此時雖然這些賬戶中并沒有PLPToken,但由于記賬在user.token0Rewards沒有更新,攻擊者因此得以取出多份獎勵。

用現實生活中的例子來描述這個攻擊,相當于我向銀行存錢,銀行給了我一張存款憑證,但這張憑證沒有防偽措施也沒有和我綁定,我把憑證復印了幾份發給不同的人,他們每個人都憑借這個憑證向銀行取回了利息。

攻擊流程分析

通過以上的代碼分析,我們發現了PopsicleFinance在機槍池實現上的漏洞。下面我們對攻擊交易進行深入分析,看攻擊者是怎樣利用這個漏洞的。

攻擊者的總體流程如下:

攻擊者創建了三個交易合約。其中一個用于發起攻擊交易,另外兩個用于接收PLPToken并調用PopsicleFinance機槍池的collectFees函數取回存款獎勵。

通過閃電貸從AAVE借出大量流動性。攻擊者選擇了PopsicleFinance項目下的多個機槍池,向AAVE借出了對應這些機槍池的六種流動性。

進行Deposit-Withdraw-CollectFees循環。攻擊者一共進行了8次循環,分別攻擊了PopsicleFinance項目下的多個機槍池,取出了大量流動性。

向AAVE歸還閃電貸,并將獲利通過TornadoCash洗錢。

本次攻擊交易主要由數個Deposit-Withdraw-CollectFees循環構成,每一個循環的示意圖如上圖所示。根據我們的分析,邏輯如下:

攻擊者首先將閃電貸借來的流動性存入機槍池中,獲得一定量的PLPToken。

攻擊者將PLPToken轉給攻擊合約2。

攻擊合約2調用機槍池的collectFees(0,0)函數,設置合約2對應的user.token0Rewards和user.token1Rewards狀態。

攻擊合約2將PLPToken轉給攻擊合約3。

和攻擊合約2的操作類似,攻擊合約3調用機槍池的collectFees(0,0)函數,設置合約2對應的user.token0Rewards和user.token1Rewards狀態。

攻擊合約2將PLPToken轉回攻擊合約,后者調用機槍池的withdraw函數Burn掉PLPToken,取回流動性。

攻擊合約2和攻擊合約3調用collectFees函數,用虛假的tokenRewards狀態取回了存款獎勵。

根據我們的以太坊交易追蹤可視化系統給出的交易調用圖如下,其中部分重要交易用紅字進行標注:

利潤分析

本次攻擊一共獲利:2.56kWETH,96.2WBTC,160kDAI,5.39mUSDC,4.98mUSDT,10.5kUNI,獲利共計超過20,000,000美元。

在此次攻擊之后攻擊者通過首先通過Uniswap和WETH將攻擊獲得的其他token全部換成ETH,然后通過多次使用Tornado.Cash將ETH洗白。

BlockSec團隊以核心安全技術驅動,長期關注DeFi安全、數字貨幣反洗錢和基于隱私計算的數字資產存管,為DApp項目方提供合約安全和數字資產安全服務。團隊發表20多篇頂級安全學術論文(CCS,USENIXSecurity,S&P),合伙人獲得AMiner全球最具影響力的安全和隱私學者稱號(2011-2020排名全球第六).研究成果獲得中央電視臺、新華社和海外媒體的報道。獨立發現數十個DeFi安全漏洞和威脅,獲得2019年美國美國國立衛生研究院隱私計算比賽(SGX賽道)全球第一名。團隊以技術驅動,秉持開放共贏理念,與社區伙伴攜手共建安全DeFi生態。

掃描二維碼,關注更多精彩

https://www.blocksecteam.com/

Tags:TOKENTOKKENTOKEJEX TokenInfiniti TokenSKYFT TokenYan Token

歐易okex官網
HTDF:HTDF公鏈項目2021年6月最新進展

技術進展 已完成: 1.解決HTDF2.0最新代碼處理大量交易的性能問題;2.研究從指定區塊高度啟動HTDF2.0新鏈;3.HTDF2.0代碼分支全功能測試用例編寫及測試.

1900/1/1 0:00:00
比特幣:劉乾釗:比特幣調整無力需突破,以太坊強勢依舊還看漲

昨日市場整體來說更偏向于震蕩,比特幣自高位下跌之后,日內持續維持在高位38500-41000區間運行,而且多次多空轉換后沒能打破區間走出方向性突破,最終日線收陰,但這并不意味著行情轉向空頭了.

1900/1/1 0:00:00
ARC:小先鋒:IPFS和星際文件系統的關系

2021年是區塊鏈迅速發展的一年,隨著國家對數字“新基建”、新型大數據中心的大力支持,基于分布式存儲的技術服務商的市場規模也呈現爆發式增長.

1900/1/1 0:00:00
GAT:Gate.io Startup首發項目ONLY1 (LIKE)免費分發結果及上線交易公告

1.關于首發項目ONLY1(LIKE)認購結果Gate.ioStartup首發項目ONLY1代幣LIKE于2021年08月03日12:00開始認購下單,6小時內下單同等對待,總共有6.

1900/1/1 0:00:00
HTT:XT關于延遲開放PLAY/BTC交易對的公告

尊敬的XT用戶: 應項目方通知,PLAY/BTC交易對將延遲開放,具體時間平臺將另行公告通知。給您帶來的不變,請您諒解!如有問題,請及時聯系在線客服.

1900/1/1 0:00:00
COI:活動預告丨SFIL主題分享:分布式存儲生態項目風險識別

如今,區塊鏈正在與實體經濟深度融合,并不斷促進我國數字經濟發展和數字化轉型。但隨之而來的,是項目爆雷、金融風險、隱私泄露、匿名交易難以追責、秩序重構引發混亂……毫無疑問,區塊鏈發展帶來的風險,對.

1900/1/1 0:00:00
ads