比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

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存在某些處理缺陷,其合約并沒有對交易者的實時交易額進行檢驗,使得攻擊者可以在一筆對自己發起真實的交易之后,再插入一筆偽裝交易騙得賣方所抵押的數字資產,進而實現空手套白狼。

專家:美國基礎設施法案中的加密修正案將不利于DeFi:11月5日消息,法律專家們警告,今天將進行表決的基礎設施法案的一部分修改了稅法部分內容,并將未能申報數字資產交易的企業和個人定為刑事犯罪。弗吉尼亞大學法學院講師Abraham Sutherland表示,這是一項獨立于備受爭議的“經紀人”條款的單獨條款,在參議院的法案中吸引了所有人的注意:“這對數字資產的所有用戶都不利,但對去中心化金融尤其不利。該法令不會完全禁止DeFi。相反,它強加了申報要求,鑒于DeFi的運行方式,這將使其無法遵守這些要求。”CoinShares CSO Meltem Demirors在推特上提出了她對該修正案違憲和反美性質的擔憂。

據悉,對第6050I條的修正案是基礎設施法案的一部分,該法案定于11月5日在眾議院進行投票表決。(Cointelegraph)[2021/11/5 6:33:25]

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

DeFi抵押品協議Opeth Finance上線:由期權驅動的 DeFi 抵押品協議 Opeth Finance 今日上線,用戶可以鏈接 MetaMask 錢包使用 ETH 和 WBTC 進行協議代幣 Opeth的鑄造。[2021/6/15 23:38:15]

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

漏洞詳細過程分析

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

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

以太坊上DeFi總鎖倉金額170.1億美元:據歐科云鏈OKLink數據顯示,截至今日11時,以太坊上DeFi協議總鎖倉金額約合170.1億美元,環比上升0.95%。

當前鎖倉金額排名前三的協議分別是Maker 25.6億美元(+2.55%),WBTC 21.7億美元(+0.43%)以及Compound 16.3億美元(+1.94%)。[2020/12/10 14:47:18]

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

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

幣贏CoinW平臺DeFi幣種 POWER領漲:據幣贏行情數據顯示,截止今日10:00(GMT+8),平臺內DeFi幣種今日POWER領漲,今日漲幅為30.58%,現價1.425USDT;YMI今日漲幅27.92%,現價158.88USDT;YAMV2今日漲幅26.99%,現價30.2717USDT;KEN今日漲幅為25.91%,現價5.9419USDT。風險提示:近期行情波動較大,請注意控制風險。[2020/9/15]

圖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:ETHDEFDEFIEFIbeth幣和erhDefiPlazaPINETWORKDEFI幣beFITTER Health

歐易okex官網
觀點:Defi提高的是融資效率_比特幣

Overview概述 使用更先進的技術,提高金融行業的生產效率是去中心化金融的核心。金融領域一直是區塊鏈從業者想要進入的領域,無論使用哪種方法進入.

1900/1/1 0:00:00
展望 | 比特幣的2020年下半場_比特幣

就在隔夜凌晨,美國聯邦法院表示,根據華盛頓特區法律,比特幣被定義為“貨幣”。指出,虛擬貨幣比特幣是華盛頓特區《貨幣傳輸者法》所涵蓋的一種“貨幣”.

1900/1/1 0:00:00
央行數字貨幣推出,銀行IT迎來新一輪發展東風_區塊鏈

文章來源:大眾證券報 全球數字貨幣發展再進一步。位于歐洲東北部的立陶宛日前發行了全球首枚CBDC,也就是“數字貨幣”.

1900/1/1 0:00:00
LINE發幣成功,日本數字在線支付走向寡頭時代_INE

來源:鏈得得 作者:毛利五郎 最近一周對日本最大的社交平臺公司Line來說,簡直如有神助。發幣成功、與PayPay聯手,美國的禁令又為Line鏟除異己,日本的在線支付領域迎來了寡頭經濟時代.

1900/1/1 0:00:00
技術解讀:波卡如何在平行鏈之間進行有效的分片?_POL

原文:https://wiki.polkadot.network/docs/en/learn-availability翻譯:PolkaWorldPolkadot的可用性和有效性協議使整個網絡能在.

1900/1/1 0:00:00
觀察|預言機代幣實現了雪球效應_HAI

資產的復利是一個滾雪球的過程,每個投資者都希望自己的投資產品都進入滾雪球的進程,不斷壯大。這也是金融產品慣用的方式。這個模式里,首先要找到一個雪球,然后是找到可以“附著”的雪,給予滾起來的動力.

1900/1/1 0:00:00
ads