以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

首發 | DeFi平臺Opyn智能合約漏洞詳解 攻擊者空手套白狼_ETH

Author:

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

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

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

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

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

LBank藍貝殼于5月3日20:00首發 CSPR(Casper),開放USDT交易:據官方公告,5月3日20:00,LBank藍貝殼上線 CSPR(Casper),開放USDT交易,同時并開放充值,資料顯示,Casper網絡是基于CasperCBC規范構建的第一個實時權益證明區塊鏈。Casper旨在加速當今企業和開發人員對區塊鏈技術的采用,同時確保隨著網絡參與者需求的發展,其在未來仍能保持高性能。[2021/5/3 21:19:51]

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

首發 | 此前18000枚BTC轉賬是交易所Bithumb內部整理:北京鏈安鏈上監測系統發現,北京時間10月24日,17:07分發生了一筆18000枚BTC的轉賬,經分析,這實際上是交易所Bithumb的內部整理工作,將大量100到200枚BTC為單位的UTXO打包成了18筆1000枚BTC的UTXO后轉入其內部地址。通常,對各種“面值”的UTXO進行整數級別的整理,屬于交易所的規律性操作。[2019/10/24]

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

漏洞詳細過程分析

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

首發 | 螞蟻礦機S17性能曝光 采用全新散熱技術及全局優化定制方案:金色財經訊,日前,比特大陸即將發布的螞蟻礦機S17性能曝光。據螞蟻礦機S17產品經理朋友圈稱,新品將采用新一代散熱技術及全局優化定制方案。據了解,該散熱技術可能是指芯片的封裝技術,也有可能是機器的散熱結構設計。至于S17產品“全局優化定制”方案未有細節透露。有聲音評價,這或許是為決戰豐水期做出的準備。[2019/3/22]

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

公告 | 火幣全球站6月29日16:00全球首發 Project PAI:火幣全球站定于新加坡時間6月29日16:00 Project PAI (PAI) 充值業務。7月2日16:00在創新區開放PAI/BTC, PAI/ETH交易。7月6日16:00開放 PAI提現業務。[2018/6/29]

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

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

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

函數處理 ERC20 Token 時,和大部分的 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 購入了 75 oETH 為進一步調用函數行權做好籌備;2、攻擊者創建了一個 Vault 地址,作為看空期權賣方,并且抵押24,750 USDC 鑄造出75 oETH,但并未賣出這些期權,等于自己同時買入了以 330 的價格賣出75 ETH 的權利;3、攻擊者在 Opyn 合約中調用了 exercise(),在持有 150 oETH 看空期權的情況下,先向自己的 Vault 地址轉入了75個 ETH,獲得自己事先抵押的 24,750 個 USDC,再重利用了這75個 ETH,成功吃掉了另一個用戶的 24,750 個 USDC,進而實現非法獲利。

修復建議

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

Tags:ETHPYNOPYOpynCoinbase Wrapped Staked ETHOpyn SqueethCopytrack

pepe最新價格
7.30早間行情:BTC維持高位震蕩 日內有機會繼續沖高_ETH

昨日整個白天,比特幣價格整體維持上行,雖然未創出新高,但在前期漲幅這么快且大的情況下,還能維持最頂部位置的震蕩,本身就只比繼續突破的強勢稍微差一些.

1900/1/1 0:00:00
累積手續費超比特幣2倍 說明以太坊依然被低估?解決擁堵問題再說_以太坊

在DeFi風聲水起和ETH價格創出年度新高的關鍵時刻,以太坊網絡交易費用也在持續上行半年之際迎來暴漲.

1900/1/1 0:00:00
FTX視頻直播 8月最巔峰DeFi圓桌討論會:2020 DeFi領域的下一步突圍_FTX

8月5日今晚8點視頻直播:2020 DeFi領域的下一步突圍特邀FTX COO Constance、AKG學院院長倉公子、幣coin COM史大爺、麥子錢包 PM 陸遙遠、Blockark創始人.

1900/1/1 0:00:00
比特幣ETF什么時候通過?“安全港”計劃有何進展?對話SEC“加密媽媽”_比特幣

第三屆亞洲區塊鏈峰會于2020年7月15日至19日舉行。來自頂尖的行業內初創企業、投資公司、金融服務巨頭、全球品牌、學術機構、國際媒體和政策組織的專業人士聚集在一起,討論區塊鏈技術在現實世界中的.

1900/1/1 0:00:00
7.27晚間行情:BTC來勢洶洶 下一站到哪里?_BTC

文章系金色財經專欄作者幣圈北冥供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.

1900/1/1 0:00:00
央行下發《區塊鏈技術金融應用評估規則》 首次從頂層設計角度給出整套評估規范_區塊鏈

財聯社訊,金融體系的區塊鏈系統和應用,終于有了全面細致的標準!繼今年3月發布《金融分布式賬本技術安全規范》之后,財聯社記者獨家獲悉.

1900/1/1 0:00:00
ads