北京時間2020年08月05日,DeFi期權平臺Opyn的看跌期權智能合約遭到黑客攻擊,損失約37萬美元。
Opyn是一個通用期權協議,于今年2月份轉型為保險平臺,通過oTokens為DeFi平臺提供可交易的ETH看跌期權,以此錨定ETH市場價格,為高波動性的DeFi市場提供相對的穩定性。
PeckShield安全團隊獲悉Opyn平臺遭受攻擊后,迅速定位到問題關鍵點在于:
攻擊者發現?Opyn智能合約行權接口對接收到的ETH存在某些處理缺陷,其合約并沒有對交易者的實時交易額進行檢驗,使得攻擊者可以在一筆對自己發起真實的交易之后,再插入一筆偽裝交易騙得賣方所抵押的數字資產,進而實現空手套白狼。
DeFi協議xDAO宣布與Polygon達成戰略合作:據官方推特消息,DeFi協議xDAO宣布與Polygon達成戰略合作。xDAO將使用Polygon架構來構建其DAO生態系統。據悉,xDAO是一個DeFi協議,用于快速簡單地創建去中心化自治組織(DAO)。[2021/7/16 0:56:06]
簡單來說,由于OpynETHPut智能合約中的行權函數exercise()沒有對交易者的ETH進行實時校驗。根據Opyn平臺的業務邏輯,看跌期權的買方給賣方轉移相應價值的ETH,即可獲得賣方抵押的數字資產。狡猾的攻擊者,先向自己發起偽裝的交易,利用這筆ETH可以重復使用的特性,再次向賣方用戶發起轉賬,進而騙取賣方已經抵押的數字資產。
DeFi一周數據速覽(5.11-5.17):金色財經報道,據歐科云鏈OKLink數據顯示,受市場下行影響,以太坊上DeFi協議的總鎖倉量(TVL)在本周顯著下降。
Unsiwap V3版本上線后,總交易量已經達到88.95億美元,24小時交易量最高超過15億美元,目前V3的流動性為9.79億美元。
當前以太坊上穩定幣流通總量達到614.3 億美元,近一周新增流通量26.29億美元。更多數據見下圖。[2021/5/17 22:11:51]
下面為您詳細分析漏洞原因及攻擊過程。
漏洞詳細過程分析
先來說說,Opyn平臺的業務邏輯:當用戶使用Opyn合約行權即買賣期貨時,需要買方向賣方轉入相應數量的ETH或者ERC20Token,然后合約將銷毀買方對應的oToken,而后買方將獲得賣方已經抵押的資產。
Bella協議 & ARPA聯合創始人兼CEO Felix:長期來看,DeFi行業最大的驅動力是穩定幣:9月16日,由霍比特HBTC全球商務副總裁Elsa Qiu主持的“霍比特E姐有約”第12期,進行了主題為這屆“DeFi中,Bella最好帶”的線上AMA,并邀請到Bella協議 & ARPA聯合創始人兼CEO Felix,為社區用戶帶來了Bella的深度分享。
談及Bella的市場優勢時,Felix稱:長期來看,DeFi行業最大的驅動力是穩定幣,而穩定幣有很強的理財需求。基于這樣的判斷,Bella 選擇從聚合理財入手。而其低門檻、免 Gas 費用、靈活的獎勵機制和極佳的用戶體驗,將會為 Bella 帶來競爭優勢。目前來看,類似 Bella 這樣綜合了跨平臺套利機會、低門檻的指南型產品,很有可能會迎來爆發式的增長。[2020/9/16]
例如:小王認為行情進入了下跌趨勢,看到Opyn上掛著一個小李對ETH330美元的看跌期權,于是進入交易系統,向小李轉賬一個ETH,獲得小李抵押的等額數字資產。若此刻行情已經跌至了300美元,小王便可獲得其中的差價。
韋氏評級:DeFi的瘋狂終會停止 冷靜的頭腦將會占據上風:加密貨幣評級機構韋氏評級(Weiss Ratings)發推稱:“DeFi會成長為加密市場整體的一部分。瘋狂的拉盤將會停止,更冷靜的頭腦將會占據上風。隨著ICOs的發展和演變,我們看到了這種發展歷程,DeFi也將效仿。”[2020/6/30]
圖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被重復使用的風險。
寫在前面: 2020年上半年,以比特幣為代表的加密貨幣行業經歷了驚人的增長,而Coinbase作為行業內的頭部機構,它觀察到了哪些牛市征兆?另外,作為“財富密碼”的制造機.
1900/1/1 0:00:00近幾年,加密衍生品更是持續火熱,成為了頭部交易所的必爭之地。然而,隨著市場的日漸成熟,這些產品的弊端也逐漸顯露.
1900/1/1 0:00:00本文來源:星球日報 作者:黃雪姣 8月6日11時許,礦商Bitfly發推稱,繼8月1日之后,ETC再遭大規模51%攻擊,目前已導致4000多個區塊發生重組,但出塊正常.
1900/1/1 0:00:00簡言: 本月流入加密貨幣交易所的比特幣數量多于流出比特幣的數量。自2020年初以來,這是首次逆轉了近六個月的趨勢。這是看跌信號嗎?分析師表示,交易員可能正在尋找將比特幣換成山寨幣.
1900/1/1 0:00:00比特幣以其波動性而聞名,但在過去的三個月里,它一直在9000-10000美元之間的狹窄區間徘徊,而從上周開始,比特幣又迎來了波動性.
1900/1/1 0:00:007月31日19:21分,據CoinGecko數據顯示,DeFi聚合收益協議yearn.finance治理代幣YFI短時跌破3500美元,一小時跌幅13.7%,截至發稿時暫報3518美元.
1900/1/1 0:00:00