北京時間 2021 年 8 月 4 日早上 6 點(區塊 12955063),Popsicle Finance 項目下的多個機槍池被攻擊,損失金額超過兩千萬美元,是迄今為止 DeFi 領域發生的損失數額最大的單筆攻擊之一。通過分析攻擊交易及項目代碼我們發現,此次攻擊是一個利用項目的記賬漏洞進行多次提取的攻擊(Double-Claiming Rewards)。下面我們通過代碼和攻擊流程分析此次攻擊。
Popsicle Finance 是一個涉及多個鏈的機槍池(Yield Optimization Platform)。
用戶首先調用 deposit 函數向機槍池存入一定的流動性,并獲得 Popsicle LP Token (以下簡稱 PLP Token)作為存款的份額證明。Popsicle Finance 會將用戶提供的流動性存入 Uniswap 等底層池子并獲得收益。
用戶還可以調用 withdraw 函數,根據用戶持有的 PLP Token 所代表的流動性份額,從機槍池取回流動性。Popsicle Finance 會將 PLP Token 對應的流動性從 Uniswap 等底層池子中取回給用戶。
第四大CrypoPunks持有者開始將資產轉移到名為“OldSchoolCollection”的新錢包:金色財經報道,據 NFT KOL @Leonidas 在社交媒體透露,匿名 NFT 巨鯨“Seths”從上周開始將其 NFT 轉移到一個名為“OldSchoolCollection”的新錢包,但不清楚該巨鯨執行此操作目的。當前該錢包已整合了 673 個 CryptoPunks V1(240 個未封裝) 247 個 Art Blocks 、213 個 CryptoPunks(1 個 Alien,3 個 Ape)、136 個 MoonCats(123 個未封裝)、以及 16 個 Autoglyphs。截止目前,Seths 已成為第四大 CryptoPunks 持有者(排名高于 Yuga Lasb)、第四大 CryptoPunks V1 持有者和第五大 Autoglyph 持有者,,如果再收集 6 枚 CryptoPunk,他將成為最大的 Punk 持有者。[2023/2/4 11:47:18]
最后,用戶在機槍池中存的流動性會隨著時間產生一定的收益(Yield),會累計在合約的用戶狀態中。用戶可以調用 collectFees 函數取回部分存款獎勵。
美國潮玩巨頭Funko Pop Digital推出DC漫畫旗下《少年泰坦》NFT:金色財經報道,美國潮玩巨頭Funko Pop Digital宣布推出《少年泰坦》(Teen Titans)NFT,發行時間為2023年1月31日,總計4.3萬枚,分為普通、罕見、稀有和史詩四個級別。少年泰坦是美國DC漫畫旗下的超級英雄團隊,其歷史幾乎與正義聯盟(Justice League)同樣久遠,并且出現過許多衍生組織。[2023/1/24 11:27:30]
本次攻擊的核心函數正是 collectFees 函數。下面我們逐步分析其代碼。首先獲得存儲在 userInfo 中的用戶狀態。其中用戶狀態中的 token0Rewards 和 token1Rewards 是由于用戶存款而累積的獎勵。
接下來計算該合約中,對應機槍池的 Token 對的 Balance。如果在合約中有足夠的 Balance,就按金額將 Reward 支付給用戶;否則會調用 pool.burnExactLiquidity 從底層 pool 取回流動性返回給用戶。
Dunamu和Hybe推出首個K-pop數字收藏品平臺:金色財經報道,韓國加密貨幣交易所Upbit的母公司Dunamu與韓國音樂團體BTS的經紀公司Hybe合作,于周二推出了一個K-pop數字收藏品平臺。該平臺名為MOMENTICA,旨在通過可持續的區塊鏈技術進一步促進粉絲與藝術家的接觸,并將于10月中旬正式啟動。它的數字收藏品被命名為TAKE,捕捉K-pop藝術家的獨特時刻,供粉絲以圖像和視頻的形式收藏。(Forkast)[2022/10/4 18:39:16]
最后,會將記錄在 userInfo 中的 Rewards 狀態進行更新。看到這里,機槍池的代碼實現還是比較符合邏輯的。但是在函數開頭我們發現了 updateVault modifier,這個函數會在 collectFees 的函數體之前運行,漏洞也許在 updateVault 相關的函數中。
以上是 updateVault 相關函數的實現。過程如下:
首先調用_earnFees 向底層 pool 獲取積累的 Fee;
美國科技雜志Popular Science官網商城上架由IoTeX賦能的智能攝像頭Ucam:官方消息,美國科技媒體Popular Science官網商城正式上架由物聯網區塊鏈 IoTeX 賦能的首款隱私智能攝像頭 Ucam ,推薦給其400萬讀者。Ucam 是首款基于區塊鏈技術實現用戶數據所有權和 100% 隱私保護的消費硬件。由 IoTeX 與 Tenvis 合作開發,榮膺 2020 CES 創新大獎,引領區塊鏈賦能用戶數據所有權和隱私風潮。
《Popular Science》創刊于1872年,是全球銷量第一的生活科技信息雜志。130多年來,Popular Science跟蹤正在或將要影響我們生活的世界科技創新和突破,成為讀者走近最新生活科技的橋梁,了解未來科技發展趨勢的窗口。[2021/4/29 21:10:50]
隨后調用_tokenPerShare 更新 token0PerShareStored 和 token1PerShareStored 參數,這兩個參數代表了池子中每個 share 代表的 token0 和 token1 的數量,即機槍池的每個份額計代表的 Token 對數量;
最后調用fee0Earned 和fee1Earned 更新對應到這個用戶的存款 Rewards (即 user.token0Rewards 和 user.token1Rewards)。
PopCom股權眾籌總額達到230萬美元:專注于智能售貨和信息亭解決方案的自動化零售技術公司PopCom在Start Engine上完成第二次股權眾籌活動。其目標是發展業務,建立銷售團隊,接觸更多客戶,并滿足在COVID-19之后對更多自動化零售機的需求。
據悉,PopCom擁有自己的自動售貨機PopShop Kiosk。在47天時間里,PopCom從眾籌投資者那里籌集130萬美元資金。此前,PopCom曾通過一項活動籌107萬美元的資金,使其眾籌總額達到230萬美元。據悉,PopCom利用面部檢測、機器學習和區塊鏈技術幫助零售商收集有價值的客戶調研信息。(Blackenterprise)[2020/7/6]
以上是fee0Earned 和fee1Earned 函數的實現,兩個函數實現相同,都實現了這樣一個公式(以_fee0Earned 為例):
user.token0Rewards += PLP.balanceOf(account) * (fee0PerShare - user.token0PerSharePaid) / 1e18
也就是說,該函數會在原有的 user.token0Rewards 基礎上,根據用戶擁有的 PLP Token 數量計算應給用戶發放的 Fee 的份額。
但我們注意到這個函數是增量的,也就是說即使用戶并沒有持有 PLP Token (PLP.balanceOf(account) 為 0),該函數仍會返回保存在 user.token0Rewards 中記賬的存款獎勵。
因此對于整個合約,我們發現兩個重要的邏輯缺陷:
用戶的存款獎勵是記錄在 user.token0Rewards 和 user.token1Rewards 中的,并不與任何 PLP Token 或其他東西有任何形式的綁定。
用于取回存款收益的 collectFees 函數僅僅依賴于記賬的 user.token0Rewards 和 user.token1Rewards 狀態,即使用戶并未持有 PLP Token,仍可以取出對應的存款獎勵。
我們假想一個攻擊流程:
攻擊者向機槍池中存入一定的流動性,獲得一部分 PLP Token。
攻擊者調用 collectFees(0, 0),后者會更新攻擊者的存款獎勵,即狀態變量 user.token0Rewards 的值,但并沒有真正取回存款獎勵。
攻擊者將 PLP Token 轉給自己控制的其他合約,再調用 collectFees(0, 0) 更新狀態變量 user.token0Rewards。也就是說通過不斷地流轉 PLP Token 并調用 collectFees(0, 0),攻擊者復制了這些 PLP Token 對應的存款獎勵。
最后,攻擊者從以上各個地址調用 collectFees 函數,取回真正的獎勵。此時雖然這些賬戶中并沒有 PLP Token,但由于記賬在 user.token0Rewards 沒有更新,攻擊者因此得以取出多份獎勵。
用現實生活中的例子來描述這個攻擊,相當于我向銀行存錢,銀行給了我一張存款憑證,但這張憑證沒有防偽措施也沒有和我綁定,我把憑證復印了幾份發給不同的人,他們每個人都憑借這個憑證向銀行取回了利息。
通過以上的代碼分析,我們發現了 Popsicle Finance 在機槍池實現上的漏洞。下面我們對攻擊交易進行深入分析,看攻擊者是怎樣利用這個漏洞的。
攻擊者的總體流程如下:
攻擊者創建了三個交易合約。其中一個用于發起攻擊交易,另外兩個用于接收 PLP Token 并調用 Popsicle Finance 機槍池的 collectFees 函數取回存款獎勵。
通過閃電貸從 AAVE 借出大量流動性。攻擊者選擇了 Popsicle Finance 項目下的多個機槍池,向 AAVE 借出了對應這些機槍池的六種流動性。
進行Deposit-Withdraw-CollectFees循環。攻擊者一共進行了8 次循環,分別攻擊了 Popsicle Finance 項目下的多個機槍池,取出了大量流動性。
向 AAVE 歸還閃電貸,并將獲利通過 Tornado Cash 洗錢。
本次攻擊交易主要由數個 Deposit-Withdraw-CollectFees 循環構成,每一個循環的示意圖如上圖所示。根據我們的分析,邏輯如下:
攻擊者首先將閃電貸借來的流動性存入機槍池中,獲得一定量的 PLP Token。
攻擊者將 PLP Token 轉給攻擊合約 2。
攻擊合約 2 調用機槍池的 collectFees(0, 0) 函數,設置合約 2 對應的 user.token0Rewards 和 user.token1Rewards 狀態。
攻擊合約 2 將 PLP Token 轉給攻擊合約 3。
和攻擊合約 2 的操作類似,攻擊合約 3 調用機槍池的 collectFees(0, 0) 函數,設置合約 2 對應的 user.token0Rewards 和 user.token1Rewards 狀態。
攻擊合約 2 將 PLP Token 轉回攻擊合約,后者調用機槍池的 withdraw 函數 Burn 掉 PLP Token,取回流動性。
攻擊合約 2 和攻擊合約 3 調用 collectFees 函數,用虛假的 tokenRewards 狀態取回了存款獎勵。
根據我們的以太坊交易追蹤可視化系統(https://tx.blocksecteam.com/)給出的交易調用圖如下,其中部分重要交易用紅字進行標注:
本次攻擊一共獲利:2.56k WETH,96.2 WBTC,160k DAI,5.39m USDC,4.98m USDT,10.5k UNI,獲利共計超過 20,000,000 美元。
在此次攻擊之后攻擊者通過首先通過 Uniswap 和 WETH 將攻擊獲得的其他 token 全部換成 ETH,然后通過多次使用 Tornado.Cash 將 ETH 洗白。
Tags:KENTOKETOKTOKENArcane TokenNyx TokenCLever TokenCmyToken
8月3日,新華社發表評論文章《新華社:“精神鴉片”竟長成數千億產業》,直指未成年人沉迷網絡游戲,將對健康成長造成不可低估的影響.
1900/1/1 0:00:00加密貨幣市場主要受投資者情緒驅動,大多數社交對話始于推特。多年來,我們在推特上看到了一些影響加密貨幣價格的趨勢和事件,最近有兩個知名人物通過他們的推特活動對加密貨幣市場產生了影響;埃隆·馬斯克(.
1900/1/1 0:00:00特斯拉在周一美股盤后公布二季報,連續第八個季度實現盈利。營收119.6億美元,去年同期60.36億美元,同比增長98%;整車毛利率為28.4%,去年同期為25.4%;凈利潤為11.42億美元,去.
1900/1/1 0:00:00暫且不說數字資產/加密貨幣,區塊鏈技術的核心特征包括去中心化、透明化、不可篡改和自動化。這些元素可以應用于各個行業,為行業提供更優質的選擇和更大的價值.
1900/1/1 0:00:00習近平總書記曾在2018年5月28日的中國科學院第十九次院士大會、中國工程院第十四次院士大會上深刻地指出:“區塊鏈作為新一代信息技術要加速突破應用……科學技術從來沒有像今天這樣深刻影響著國家前途.
1900/1/1 0:00:00金色財經 區塊鏈8月10日訊 眾所周知,當我們購買一件實體藝術品時,得到的是一個實物,我們可以將購買到的名畫放在墻上并欣賞這個實體,并且所有者有權允許其他人展示畫作副本.
1900/1/1 0:00:00