買以太坊 買以太坊
Ctrl+D 買以太坊
ads

ETH:DeFi平臺Opyn智能合約漏洞詳解:攻擊者空手套白狼!_Liquid Staked ETH

Author:

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

北京時間2020年08月05日,DeFi期權平臺Opyn的看跌期權智能合約遭到黑客攻擊,損失約37萬美元。

Opyn是一個通用期權協議,于今年2月份轉型為保險平臺,通過oTokens為DeFi平臺提供可交易的ETH看跌期權,以此錨定ETH市場價格,為高波動性的DeFi市場提供相對的穩定性。

PeckShield安全團隊獲悉Opyn平臺遭受攻擊后,迅速定位到問題關鍵點在于:

攻擊者發現?Opyn智能合約行權接口對接收到的ETH存在某些處理缺陷,其合約并沒有對交易者的實時交易額進行檢驗,使得攻擊者可以在一筆對自己發起真實的交易之后,再插入一筆偽裝交易騙得賣方所抵押的數字資產,進而實現空手套白狼。

DeFIL 2.0即將登陸幣安智能鏈BSC:據官方消息,Filecoin去中心化金融服務平臺DeFIL 2.0將于2021年9月1日11時正式上線幣安智能鏈BSC,并同步開啟所有功能。為了更好地加強filst的市場影響力,經社區建議,DFL產出分配將會做出相應的調整,調整后20%的DFL產出獎勵給存FIL的用戶;20%獎勵給Pancake上FILST-USDT流動性提供者;20%獎勵給Pancake上eFIL-FILST流動性提供者;20%獎勵給Pancake上DFL-USDT流動性提供者;10%給到社區激勵;5%歸屬于基金會;5%歸屬于技術團隊。[2021/8/31 22:49:04]

簡單來說,由于OpynETHPut智能合約中的行權函數exercise()沒有對交易者的ETH進行實時校驗。根據Opyn平臺的業務邏輯,看跌期權的買方給賣方轉移相應價值的ETH,即可獲得賣方抵押的數字資產。狡猾的攻擊者,先向自己發起偽裝的交易,利用這筆ETH可以重復使用的特性,再次向賣方用戶發起轉賬,進而騙取賣方已經抵押的數字資產。

Waves中國區負責人Steve:Waves推出Duck Hunters激勵用戶參與Waves Defi:5月22日,在《佟掌柜的朋友們·礦工與農民論壇》,Steve稱Waves推出Duck Hunter Games, 這是一系列NFT游戲化計劃以及針對Waves生態系統的DeFi激勵機制:Waves團隊將在整個Duck Hunter活動中分發100萬個$EGG代幣,$EGG空投將激勵區塊鏈本地DEX swop.fi,Waves交易所以及Waves協會,SIGN Art的成員以及NSBT和WCT的持有者在Waves生態系統中的激活。

產品路線圖:四月-將EGG空投給活躍生態系統成員-社交媒體支持的EGG獎勵-首批可用于EGG的NFT鴨子,五月-USDN定期回購NFT鴨子-引入寵物育種以創造新一代鴨,六月-NFT的二級市場-大獎鴨子-獲得完全獨特的物品。[2021/5/25 22:42:10]

下面為您詳細分析漏洞原因及攻擊過程。

DeFi總鎖倉量突破1000億美元,創歷史新高:據DeBank最新數據顯示,DeFi總鎖倉量于4月28日突破1000億美元,創歷史新高。當前總鎖倉量為1016億美元,凈鎖倉量為728.4億美元。當前鎖倉金額排名前三的DeFi協議分別是PancakeSwap(127億美元)、Uniswap(106億美元)、Compound(97億美元)。總鎖倉量(TVL)是衡量一個 DeFi 項目使用規模時最重要的指標,通過計算所有鎖定在該項目智能合約中的ETH及各類ERC-20代幣的總價值(美元)之和而得到。[2021/4/28 21:05:33]

漏洞詳細過程分析

先來說說,Opyn平臺的業務邏輯:當用戶使用Opyn合約行權即買賣期貨時,需要買方向賣方轉入相應數量的ETH或者ERC20Token,然后合約將銷毀買方對應的oToken,而后買方將獲得賣方已經抵押的資產。

Compound總法律顧問:Sushi的崩盤并不意味著“DeFi不行了”:Compound總法律顧問Jake Chervinsky發推稱,我們可以從Sushi的崩盤中吸取很多教訓,但“DeFi不行”并不是其中之一。這就好比當一些不相關的區塊鏈方案失敗時,因為錯誤地得出了“加密貨幣不行”的結論就拋棄了比特幣。[2020/9/6]

例如:小王認為行情進入了下跌趨勢,看到Opyn上掛著一個小李對ETH330美元的看跌期權,于是進入交易系統,向小李轉賬一個ETH,獲得小李抵押的等額數字資產。若此刻行情已經跌至了300美元,小王便可獲得其中的差價。

圖1.exercise()?函數中循環執行傳入的?vaults?地址列表

如上面的合約代碼片段所示,行權函數exercise()的內部是一個循環,依據參數中傳遞的vaultsToExerciseFrom中的地址數量依次調用真正的行權邏輯_exercise()函數。

圖2.重用傳入合約的ETH來獲得抵押資產

函數處理ERC20Token時,和大部分的DeFi項目做法一樣,使用transferFrom(),如代碼1882行所示,從msg.sender轉賬到address(this)。

但是當函數處理的資產為ETH時,處理的方式就完全不一樣了。因為在Solidity中,msg.value的意思是合約調用者在調用具有payable接口時所轉給該合約的ETH數量,僅是一個量值,所以在合約代碼的1879行中,檢查msg.value==amtUnderlyingToPay僅能確保合約確實收到了amtUnderlyingToPay數量的ETH,并不會對msg.value的值造成任何影響。

但是正如上面講到的在exercise()中會循環調用_exercise()函數,這導致盡管合約實際只收到一次ETH,然而在循環過程中卻可以重復使用。

攻擊點就在這里,由于合約少了一步對ETH實時數量的檢驗,使得攻擊者可以先偽造一筆指向自己的交易,然后再把已經花掉的本金再次利用,和平臺其他用戶完成一筆正常交易。

圖3.?攻擊交易分析

在圖3中,我們通過Bloxy瀏覽器顯示的調用過程來展示攻擊的過程。由于攻擊者吃掉了很多筆訂單,我們以其中一筆交易為例,向大家展示其攻擊邏輯:

1、攻擊者先從Uniswap購入了75oETH為進一步調用函數行權做好籌備;

2、攻擊者創建了一個Vault地址,作為看空期權賣方,并且抵押24,750USDC鑄造出75oETH,但并未賣出這些期權,等于自己同時買入了以330的價格賣出75ETH的權利;

3、攻擊者在Opyn合約中調用了exercise(),在持有150oETH看空期權的情況下,先向自己的Vault地址轉入了75個ETH,獲得自己事先抵押的24,750個USDC,再重利用了這75個ETH,成功吃掉了另一個用戶的24,750個USDC,進而實現非法獲利。

修復建議

PeckShield安全團隊建議,在Solidity中,合約可使用一個局部變量msgValue來保存所收到ETH。這樣,在后續的步驟中通過操作msgValue,就能準確的標記有多少ETH已經被花費,進而避免資產被重復利用。此外,我們還可以使用address(this).balance來檢查合約余額來規避msg.value被重復使用的風險。

Tags:ETHEFIDEFDEFILiquid Staked ETHDives DefiDefi Factoryfdudefi

Gate交易所
COM:錯過了 YFI,還有哪些流動性挖礦項目值得關注?_Global Digital Trade Warrant

作者?|?StevenZheng 摘要 充分利用流動性挖礦和收益耕作,TheBlock總結并可視化了DeFi協議推出的受歡迎的激勵計劃這些項目涉及Balancer.

1900/1/1 0:00:00
POL:彭博社:美國人正在用貶值的美元換比特幣_比特幣歷史走勢圖

彭博社的一篇文章聲稱,美國人正在購買諸如股票、黃金和比特幣等投機性資產,目前這些資產已超越美元的安全性。 高儲蓄率,低收益 由于新冠肺炎的封鎖,美國的個人儲蓄率達到了歷史最高水平.

1900/1/1 0:00:00
YFI:年化超1000%? YFI為何能成為DeFi新寵?_DEF

在迅速擴張的去中心化金融世界中,出現了一個新的玩家,吸引了尋求高收益的流動性礦工(即通過為DeFi提供流動性賺取收益的人).

1900/1/1 0:00:00
數字貨幣:俄羅斯央行副行長:購買加密貨幣不是投資是“犯罪”_Vetter Skylabs

雖然俄羅斯的數字金融資產法案本月在國家杜馬通過,但俄羅斯中央銀行仍然認為購買加密貨幣不應被視為投資.

1900/1/1 0:00:00
比特幣價格:2020應屆生入職率不足13%,央視報道歐科云鏈聚焦新興職業人才缺口_區塊鏈

疫情影響下,全球經濟放緩,就業環境嚴峻,求職難、保薪難,已經成為不爭的事實。然而,作為新基建的區塊鏈行業卻逆勢迎來新風口,人社部近日發布的9個新職業中,區塊鏈就占有2席,區塊鏈頭部企業求賢若渴,

1900/1/1 0:00:00
CRV:Curve治理代幣本周將上線,一文了解CRV分配機制_curve幣官網

Curve是第三大去中心化交易所,累積交易額近20億美元,是流動性挖礦狂熱的中心,其正準備在本周分發自己的CRV治理代幣——可能就在這幾天——而流動性提供者已經等不及了.

1900/1/1 0:00:00
ads