駭客的狂歡,限於技術掣肘的 DeFi 如何破局?

2020 年 3 月 Compound 推出“借貸挖礦”模式,讓沉寂多時的幣圈再次燥動起來。一位參與過 DeFi 挖礦的“礦工”表示,為了搶到頭礦,他把賭注押在未經測試的程式碼上,“不管安不安全,先把頭礦搶了。”

開發者們更急,為了快速上線主網,從新發布的程式碼中獲得最大收益,他們直接略過了安全審計的步驟。

那些穩如泰山的駭客們,也開始把握機會,憑藉自身技術實力,伺機攻擊那些沒有做好安全預防措施的 DeFi 們。

進入11月,發生在DeFi協議上的攻擊一起接著一起,DeFi 們儼然淪為駭客的取款機。據 PeckShield 統計,截至目前共發生 8 起與 DeFi 相關的安全事件,包括 Yearn Finance、Percent.finance、Cheese Bank、Origin Protocol、Akropolis 、Value DeFi、YFV、88mph,造成損失逾 2100 萬美元。

驚險時分:24小時發生兩起攻擊事件 損失近800萬美元

11月17日,PeckShield 監控到 DeFi 協議 Origin Protocol 穩定幣 OUSD 遭到攻擊,攻擊者利用在衍生品平臺 dYdX 的閃電貸進行了重入攻擊(Re-entrancy attack),造成價值 770萬 美元的損失。OUSD遭“經典重入攻擊” 損失770萬美元 DeFi安全亟待解決

隨後,11月18日,PeckShield 監控到 DeFi 固定利率借貸協議 88mph 存在程式碼漏洞,一名攻擊者利用該漏洞鑄造了價值 10 萬美元 MPH 代幣。

據悉,88mph 於 11 月 16 日上線主網,上線僅 48 小時就遭到了攻擊。在 88mph 協議中,使用者可透過存入加密資產賺取固定利息,並獲得其原生代幣 MPH,也可透過購買浮動利率的債券來獲取 MPH 代幣。

上線僅48小時後即遭伏擊

PeckShield 透過追蹤和分析發現,首先,攻擊者呼叫 DInterest::deposit()函式將穩定幣儲存在資金池中,此時,存款者會收到一個新的 depositID,它相當於非同質化通證(NFT),同時 MPHMinter 合約會開始鑄造 MPH 代幣;

隨後,呼叫 fundAll()函式購買浮動利率的債券,在此步驟中,使用者可獲得 MPH 代幣和一個 fundingID (非同質化通證 );

接下來,攻擊者將步驟1和步驟2所獲得的depositID及fundingID 傳入 earlywithdraw()函式提取在這兩步中所存入的資產。也就是說,攻擊者將步驟 1 中原本要鎖倉 1 年的加密資產被提前取出,此時攻擊者不會獲得任何利息,因此步驟 2 中提供的資金也原路退回,並且 MPHMinter 會銷燬在步驟 1 中鑄造的所有 MPH 代幣。值得注意的是,在第 2 步中所鑄的 MPH 代幣並沒有被銷燬。攻擊者利用這點,以0成本獲得了步驟 2 所鑄造的價值 10萬美元的 MPH 代幣。

透過重複操作這三個步驟,攻擊者鑄造了價值 10萬 美元的 MPH 代幣,並將其存入 Uniswap V2: MPH 4 池中。

利用另一漏洞僥倖逃過一劫

事實上,MPHMinter合約還有一個漏洞,而開發者利用此漏洞僥倖逃過一劫,使得此次攻擊暫未造成任何經濟損失。

首先,開發者呼叫 takeBackDepositorReward 將所獲 MPH 代幣從 Uniswap V2: MPH 4 轉移到 govTreasury(相當於 mph 的資金庫),該函式沒有設定門檻,任何人都可呼叫此函式將 MPH 代幣轉移到 govTreasury 中。

由於攻擊者將獲得的 MPH 代幣存入了 Uniswap V2: MPH 4 池子當中,而 88mph 專案方自己掏空了該池子,然後做了快照,因此暫未造成任何經濟損失。

PeckShield 相關負責人表示:“駭客們的攻擊可能會毀滅或‘殺死’一個專案,DeFi 們不要存在僥倖心理,應該做好充分的預防措施。如果對此不瞭解,應該找專業的審計機構對程式碼進行徹底地審計和研究,防範各種可能發生的風險。”

開發者編寫的每一段程式碼,就如同工業生產中的螺絲釘一般,即使很微小,卻與 DeFi 行業的興衰成敗緊密相連。

DeFi 的生態仍處於早期發展階段,但區塊鏈的核心價值在於普世的信任,如果 DeFi 們仍一味追求快速上線主網,忽視程式碼的審計安全,最終只能將社羣成員的信任消磨殆盡,成為沒有靈魂的軀殼。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读