
PeckShield:硬核技術解析,bZx協議遭黑客漏洞攻擊始末PeckShield:硬核技術解析,bZx協議遭黑客漏洞攻擊始末PeckShield:硬核技術解析,bZx協議遭黑客漏洞攻擊始末
PeckShield:硬核技術解析,bZx協議遭黑客漏洞攻擊始末
》中分析了bZx 於02月15日遭到黑客一次可組合資產流動性攻擊,那是由於bZx 合約對抵押品狀態判斷不完善導致的。
Figure: Five Exploitation Steps With Oracle Manipulation
02月18日,bZx 再次遭遇了類似的攻擊,這一次的攻擊從技術原理與上一次不同,此次黑客是通過操縱Oracle 價格對bZx 合約進行了“矇騙”。
漏洞的攻擊細節如下:
一級標題
一級標題
一級標題
Figure1: Flashloan Borrowing From bZx
本次攻擊者向bZx 平台借出7,500 ETH,並指定攻擊者的合約(此前已經部署)為資產接收方地址,這部分是基本的借貸功能,此處不做進一步解釋。
一級標題
一級標題
一級標題
第二步:拉升sUSD
Figure2: Pumping With Kyber (and Uniswap)
這兩步驟也是正常的DEX 幣幣交換的過程,在這兩個批次操作之後sUSD 對ETH 的價格瘋漲到了0.00899,是市場價的2.5 倍。
一級標題
一級標題
一級標題
Figure3:Hoarding From Synthetix
一級標題
一級標題
第四步:抵押借款
攻擊者將手裡擁有的1,099,841 枚sUSD 通過bZx 的borrowTokenFromDeposit() 接口全部抵押到bZx 合約之中,按照sUSD/ETH 正常價格的話,bZx 應當借給攻擊者3,928 ETH,但是bZx 從Oracle Kyber 這邊獲取的價格偏高,使得借出了6,796 枚ETH,多藉了2,868 ETH。
Figure4: Collateralized Borrowing From bZx
一級標題
一級標題
一級標題
Figure5: Repay The Flashloan To bZx
第五步:閃貸還款
攻擊者利用從bZx 借到的6,796 枚ETH 以及手中剩餘的資產一起還給之前從bZx 借出來的7,500 ETH,然後退場離開,完成閃貸操作。
完成整個閃電貸流程之後,當前資產情況:
1)bZx 平台對攻擊者藉出的6,796 ETH;
總結總結
總結
一級標題
總結
這一次的攻擊事件中,我們能看出DeFi 產品在設計過程中幾個明顯的問題點:
1)當引入第三方Token 的時候,需要考察第三方Token 的安全性,有沒有可能被單方面市場操縱,從而引起價格波動;
2)DeFi 平台自身應當有價格容錯與檢驗機制,使用第三方Oracle 獲取價格的時候,對他方的數據有盡可能多的驗證;
3)平台自身對於價格也應當設立止水閥機制。