2021 年 8 月 8 日(北京時間,區塊高度 12982491),Zerogoki 遭到攻擊,導致 67 萬美元的損失。經過調查,我們發現該事件與被駭的價格預言機有關。攻擊者提供了由合法私鑰簽名的價格預言機,其中包含了惡意構造的代幣兌換數量。然而,攻擊者為何能夠構造出有效簽名的原因目前尚不明確。
代碼分析
我們首先對受攻擊的合約進行了分析 (0x80ecdb90)。

swap 函數調用了 decode_op 以獲取預言機中的資訊。在執行驗證後,合約會銷毀 ns[0] 數量的 x.token,鑄造 ns[1] 數量的 y.token,並向 GOV 合約支付兌換手續費。

從 decode_op 的實現來看,參數中存在三個簽名。在執行代幣兌換(銷毀和鑄造)之前,這些簽名需要進行檢查(和授權)。
總結來說,swap 函數的第一個參數 ns 定義了要兌換的代幣數量。第二個參數包含需要驗證的簽名。當驗證通過時,兌換的代幣數量即由第一個參數 (ns) 所定義。
攻擊分析
在該攻擊交易中 (0x81e5f715),攻擊者構造了一條包含有效簽名的訊息,並傳入了一個惡意構造的 ns 參數(其中包含大量的 zUSD)。結果,攻擊者僅用 300 個 REI 就兌換了 70 萬個 zUSD。

與這些簽名相關聯的三個地址分別為:
0x0d93A21b4A971dF713CfC057e43F5D230E76261C
0x3054e19707447800f0666ba274a249fc9a67aa4a
0x4448993f493b1d8d9ed51f22f1d30b9b4377dfd2
然而,在現階段,我們尚無資訊說明這些地址的私鑰為何洩漏。
總結
確保 DeFi 項目的安全並非易事。除了代碼審計之外,我們認為社區應採取主動的方法來監控項目狀態,並在攻擊發生前攔截它。
關於 BlockSec
BlockSec 是一家開創性的區塊鏈安全公司,於 2021 年由一群享譽全球的安全專家創立。公司致力於增強新興 Web3 世界的安全性和可用性,以促進其大規模採用。為此,BlockSec 提供智能合約與 EVM 鏈的安全審計服務、用於安全開發及主動攔截威脅的 Phalcon 平台、用於資金追蹤與調查的 MetaSleuth 平台,以及專為 Web3 建設者在加密世界高效導航的 MetaSuites 瀏覽器插件。
迄今為止,公司已服務超過 300 家知名客戶,如 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap,並從 Matrix Partners、Vitalbridge Capital 和分佈式資本(Fenbushi Capital)等頂尖投資機構處獲得了兩輪數千萬美元的融資。
官方 Twitter 賬號:https://twitter.com/BlockSecTeam



