2 月 18 日,去中心化金融(DeFi)借貸協議 bZx 新產品閃電貸(Flash Loan)再遭二次攻擊,初步估計損失 2,388 枚以太幣(ETH),約為 64.5 萬美元。針對上述消息,bZx 共同創始人 Kyle Kistner 在官方 Telegram 頻道中證實,並表示,有別於上一次的攻擊,「這次的手法似乎是 Oracle 操縱攻擊」。
據了解,這次的閃電貸攻擊發生在區塊高度 9504627,攻擊者借出 7,500 枚以太幣再將其兌換成 WETH 後,拋售換成 Synthetix 合成的 sUSD,隨后買回 WETH 獲利。 bZx 稍早在推特上發文稱,
Kyber 上的 sUSD 儲備金包含 APR 和 Uniswap 池,但我們認為攻擊者能夠同時操縱前後兩者,並規避相關檢查。因此,我們將實施一項更改:允許交易者和借款方平倉。期間,我們將加強協議安全以確保不會再次發生類似事件。另外,我們正與 Chainlink 和其他 Oracle 網絡合作,予以創建更安全的 Oracle 網絡,並減低受攻擊的機率。
https://twitter.com/bzxHQ/status/1229759854803181568
針對第二次的攻擊,產業媒體《The Block》研究總監 Larry Cermak 第一時間在推特上發文,解析整起事件經過的同時,更讚揚攻擊者這般操作手法「相當優雅」:
-
-
- 從閃電貸借出 7,500 枚以太幣;
- Synthetix 上交易 3,517 枚以太幣(94 萬枚 sUSD,價格接近 1 美元);
- 利用 900 枚以太幣在 Kyber 和 Uniswap 上買進 sUSD,以此將價格推高到 2 美元以上;
- 利用 sUSD 作為抵押品,然後在 bZx 上借入 6,796 枚以太幣;
- 利用借來的以太幣和剩餘的以太幣(6,796 + 3,083)償還閃電貸(7,500),套利 2,379 枚以太幣(9,879 – 7,500);
- bZx 的以太幣池損失約 180 萬美元,sUSD 池則損失 110 萬美元。攻擊者淨賺 64 萬美元。
-
在這之前,bZx 曾於 2 月 15 日遭攻擊而損失 1,193 枚以太幣(價值約 29.8 萬美元)。 Kyle Kistner 當時透露,協議有合約漏洞遭攻擊者趁虛而入,所幸團隊已第一時間暫停該合約,但借貸合約和解除合約仍在運行。 Kyle Kistner 表示,團隊接下來將部署合約升級,試圖藉由提升系統來對抗攻擊。
bZx 二次遭遇攻擊表明,團隊仍需針對 DeFi 智能合約進行更徹底的審計。再者,bZx 在這兩次都將平台凍結,似乎意味著:即便標榜「DeFi」應用,但它終究是個傾向於「中心化」的平台,開發者可以使用「管理密鑰(admin key)」來關閉平台上的交易。
區塊鏈資安業者慢霧科技提到,bZx 兩次攻擊的主要原因均為:「Uniswap 價格的劇烈變化最終導致資產的損失」,本該是正常的市場行為,但若通過惡意操縱市場,攻擊者仍可通過多種方式壓低價格,對項目方造成損失。針對這種通過操縱市場進行獲利的攻擊,慢霧安全團隊建議道,
項目方在使用 Oracle 獲取外部價格的時候,應設置保險機制,每一次在進行代幣兌換時,都應保存當前交易對的兌換價格,並與上一次保存的兌換價格進行對比,如果波動過大,應及時暫停交易。防止市場被惡意操縱,帶來損失。
對此,加密貨幣研究機構 MICA Research 分析師表示,
這起事件與其說攻擊,不如算是套利。有心人士故意利用 Uniswap 報價錯誤中間產生一定價差,再以此套利。近年來,DeFi 產品發展步伐過於緊湊,市場報價的機制尚未成熟,但相信未來在這方面定會更加完善,就如同今時今日的交易所技術一樣。