9 月 15 日更新:bZx 官方表示丟失的資產已經全部找回。
9 月 14 日,bZx 協議再次遭到攻擊,共計損失價值逾 800 萬資產。另一方面,去中心化保險 Nexus Mutual 的有效保額突破了 2 億美元,較昨日翻倍。

撰文:張改娟

昨日,DeFi 借貸協議 bZx 年內第三次遭到攻擊,由於代碼重複事故導致共計損失價值超 800 萬的資產,這距離 BZx 新版本部署僅不到兩週。受此影響,bZx 代幣 BZRX 過去 24 小時跌近 30%,從 0.6679USDT 一度跌至 0.4 USDT,發文時暫報 0.44USDT。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存BZRX 30 分鐘 K 線圖,來源:幣安

與此同時,bZx 鎖倉量較昨日暴跌 99.71%,幾乎歸零,目前僅爲 176 美元。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存

北京時間 9 月 14 日下午 3 點半左右,bZx 發現其協議總鎖定價值(TVL)出現顯著下降。大約 3 小時後 bZx 確認多個 iToken 發生了重複事故,即 iToken 合約中的_internalTransferFrom() 函數出現異常行爲,攻擊者利用了相同的_from 和_to 地址調用了傳輸函數。確認問題後 bZx 隨即暫停了放貸操作。

bZx 表示,目前該函數異常行爲已被修復,協議也已恢復正常運行。借款和交易未受到影響,用戶不會受到資金風險。bZx 也已部署了新版本的 iToken 合約,並針對重複事故重設了餘額。修復後的代碼已發送給區塊鏈安全公司 Peckshield 和 Certik 進行審查。目前 iToken 的鑄造和銷燬已恢復。

bZx 披露的信息顯示,此次重複事故發生後已將以下債務添加至其保險基金中,包括近 22 萬 LINK、4502ETH、175.64 萬 USDT、141.20 萬 USDC、以及 66.80 萬 DAI,按當前價格計算,總價值逾 800 萬美元,具體如下:

  • 219,199.66 LINK
  • 4,502.70 ETH
  • 1,756,351.27 USDT
  • 1,412,048.48 USDC
  • 667,988.62 DAI

去中心化借貸協議 Compound 創始人 Robert Leshner 表示,這意味着 bZx 損失了價值 800 多萬的資產,並建議 bZx 重新審計合約,而不是僅向用戶表示「no big deal」。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存

針對 bZx 協議被攻擊一事,Bitcoin.com 首席工程師 Marc Thelan 表示,昨晚其在 bZx 中發現了該漏洞,有價值超過 2000 萬美元的資產處於危險之中。Marc Thelan 稱其將該漏洞告知了 bZx 團隊,但該團隊反應過於緩慢。等到 bZx 團隊獲悉該漏洞時,攻擊者幾乎已經耗盡了 Dai 和 USDC 資產。如果攻擊者有更多時間,可能會耗盡整個池子。bZx 的一位創始人在電報羣中表示,團隊安全小組建議給 Marc Thelan 1.25 萬美元的賞金。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存

1inch 聯合創始人 Anton Bukon 此前也發現了該漏洞,其表示,「我們發現有人在兩天前就利用該漏洞將自己的餘額增加到 1.536 億枚 iUSDT,並開始從 USDT 池中轉走,直到 bZx 協議管理員銷燬了 1.519 億枚 iUSDT,這表明似乎有 170 萬 USDT 被盜。」

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存

關於 bZx 協議管理員銷燬 iUSDT 一事,以太坊開發人員 Roman Semenov 解釋稱,bZx 協議管理員使用了一個允許其銷燬任何用戶資金的後門,然後將代幣的實現狀態更新爲未經驗證。在銷燬一些涉及攻擊的用戶資金後,他們再次將其更新爲漏洞修復後的正常實現。

bZx 進一步解釋稱,該協議此前已經過區塊鏈安全公司 Peckshield 及 Certik 的安全審計,並進行了大量的自動化測試,但通過審計並不能確保協議 100% 安全。Peckshield 及 Certik 正在分析此次事件的根本原因。

DeFi 項目頻繁遭受攻擊,刺激去中心化保險需求

事實上,這並不是 bZx 協議首次受到攻擊。今年 2 月中旬,bZx 協議曾兩次受到攻擊,共計損失價值逾 90 多萬的資產。當月中旬,bZx 聯合創始人 Kyle Kistner 表示,「部分 ETH 已損失,此次事件是因爲一個合約被利用導致的,其他資金是安全的。」業內人士估測,此次損失金額約爲 35 萬美元。

3 天后(2 月 18 日),bZx 再次受到攻擊。bZx 表示又發現了一次使用閃電貸進行的可疑交易,攻擊者後續使用了 Synthetix 交易,不過沒有影響到 Synthetix 系統。

除 bZx 之外,近期隨着 DeFi 熱度的大幅提升,安全問題成爲了 DeFi 行業的最大挑戰。據 PeckShield 數據顯示,八月共發生安全事件 28 起,其中 DeFi 市場就發生了 8 起。

正因如此,去中心化保險的市場需求應運而生。Nexus Mutual Tracker 數據顯示,截至目前,去中心化保險 Nexus Mutual 的有效保額突破了 2 億美元,較之兩個月前,該數值已經增長逾 20 倍

而在過去短短的 24 小時左右時間裏,該數據就大漲 130%,今日 bZx 的安全事故顯然成爲了去中心化保險「大躍進式」增長的重要催化劑。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存去中心化保險 Nexus Mutual 的有效保額,來源:Nexus Mutual Tracker

可以想象,隨着 DeFi 市場的持續發展,去中心化保險、預言機等細分市場有望繼續保持增長勢頭。

bZx 協議代碼安全漏洞的技術細節與進展更新

根據 bZx 發佈的漏洞 報告,此次事件發生後的團隊所採取的進展以及技術細節如下:

  1. 團隊注意到協議總鎖定價值出現了異常變動;
  2. 在 iToken 上識別出與_internalTransferFrom() 函數相關的異常行爲;
  3. 團隊在確定修復方案後暫停了 iToken 的鑄造和銷燬,不過,借款和交易並未受到影響;
  4. 部署了新版本的 iToken 合約,並重設了餘額;
  5. 修復後的代碼已發送給 Peckshield 和 Certik 進行審查;
  6. 恢復 iToken 的鑄造和銷燬。

在以太坊 ERC20 代幣中,TransferFrom() 函數(傳輸函數)是將一定數量的代幣從一個地址轉移至另一個地址的執行操作,即從地址_from 發送_value 個 token 到地址_to。

此次 iToken 重複事故正是攻擊者利用了相同的_from 和_to 地址調用了傳輸函數。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存有誤的代碼

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

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存有誤的代碼

上述問題導致再減少_balancesFrom 餘額的情況下增加了_balancesTo 的餘額,並且還保存了_balancesFromNew 和_balancesToNew,這會導致用戶能夠人爲地增加自己的餘額。

修復後的代碼在 balances[_from] 餘額減少後,會進行 balancesTo 餘額的轉移,從而防止用戶人爲增加自己的餘額。

bZx 年內上演安全問題「 帽子戲法」,DeFi 安全「危」與「機」並存修復後的代碼