DeFi 協議 bZx 再次遭遇攻擊,損失超過800萬美元

買賣虛擬貨幣

北京時間9月14日訊息,DeFi借貸協議bZx再次遭到攻擊,而這次攻擊共造成了大約800萬美元的損失,據bZx聯合創始人Kyle Kistner最初提到稱:“這似乎是一次預言機操縱攻擊。”

在攻擊被發現後,bZx團隊立即使用管理金鑰暫停了協議,據悉這次攻擊交易利用了閃電貸和Synthetix,“但它不會影響Synthetix系統,儘管它確實涉及了sUSD,” bZx在twitter上寫道

而bZx官方在最新公佈的安全報告中提到稱:

“由於一次代幣重複事件,協議保險基金暫時累積了一筆債務。除了協議現金流外,保險基金還會得到代幣庫的支援。”

以下是這次安全事故的時間線:

  1. bZx團隊注意到協議鎖定值(TVL)出現了異常變動;

  2. 發現iToken合約有異常,該異常的發生與 _internalTransferFrom() 函式相關;

  3. 在確定修復方案後,iToken的鑄造和燃燒被暫停(借款和交易不受影響);

  4. 受影響的iToken合約的新版本得到部署,餘額得到更正;

  5. 團隊將補丁程式碼傳送給派盾(Peckshield)和Certik進行審查;

  6. iToken的鑄造及燃燒恢復;

攻擊技術細節

每個ERC20代幣都有一個 transferFrom()函式是用於負責傳輸代幣的。你可以呼叫這個函式來建立一個 iToken並將其傳遞給自己,從而允許你人為地增加餘額。

下面是攻擊涉及的技術細節:

  1. 使用相同的_from和 _to地址呼叫了傳輸函式;

  2. 用相同的引數呼叫Immediately _internalTransferFrom;

  3. 下面的程式碼行存在故障:

當_from和_to地址相同時,會導致_balancesFrom和_balancesTo相等。

那麼

上面的問題導致 _balancesFrom餘額的減少,並增加_balancesTo的餘額,最後最重要的部分是儲存_balancesFromNew和 _balancesToNew。那麼攻擊者就能夠有效地人工增加自己的餘額。

然後,下面就是補丁程式碼:

這可以防止攻擊者增加自己的餘額,據悉,修補後的程式碼已被髮送給Peckshield和Certik進行審查,而雙方都批准了這些更改。

安全事故造成近800萬美元債務

儘管,bZx程式碼漏洞很快得到了解決,但這次安全事故確實造成了協議很大的損失,根據官方公佈的資訊顯示,這次事件導致了以下這些債務:

  1. 219,199.66 LINK

  2. 4,502.70 ETH

  3. 1,756,351.27 USDT

  4. 1,412,048.48 USDC

  5. 667,988.62 DAI

以當前市場價計算,這些損失的代幣的價值達到了800萬美元。

審計並不是靈丹妙藥

根據Bzx團隊公開的資訊顯示,該協議此前已經過安全公司Peckshield及Certik的嚴格審計,其中Peckshield對bzx協議的審計用到了12人周的工作量,而Certik則花費了7人周的工作量。此外,bzx協議團隊還進行了廣泛的自動化測試,不幸的是,審計並不是靈丹妙藥。

而在這次安全事件中,由於bzx協議團隊控制了管理金鑰,因而能夠及時地應對這一事件,否則損失問題將會更大。

顯然,這次事故再次為我們敲響了DeFi安全性的警鐘,即便是得到審計公司的把關,也無法確保程式碼不存在漏洞,而近期湧現出來的大量新DeFi專案,它們的安全隱患顯然要更大。

最後,一首涼涼,送給流動性挖礦。

免責聲明:

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

推荐阅读

;