其實這種「預言機攻擊」導致的 DeFi 損失,在 2020 年就已經屢見不鮮。
(前情提要:Ankr更新》將調資1,500萬鎂恢復基金,購買增發的HAY補償受損用戶)
(事件背景:10顆BNB 變「1,550萬鎂」!趁 Ankr 遭駭套利,算穩幣 HAY 被玩到脫鉤)
12 月 2 日,加密基礎設施提供「Ankr」的 aBNBc Token(BNB 封裝資產)合約因存在無限鑄造 Token 漏洞而被攻擊,攻擊者鑄造了大量 aBNBc Token 後賣出,導致 aBNBc 價格幾近歸零,很多用戶都未有及時獲知消息從而止損。
與此同時,更有敏銳度高的駭客第一時間進行套利,利用 10 BNB 兌換 aBNBc,通過借貸協議 Helio 套利超 1550 萬美元。
01 Ankr 攻擊事件複盤
如果複盤此次 Ankr 攻擊事件,會發現其中大幅獲利的主要分為兩個角色:
- 一是最直接地就是駭客直接利用合約漏洞,憑空鑄造大量 aBNBc 並砸盤獲利;
- 二是有嗅覺敏銳的鏈上用戶趁 aBNBc 二級市場價格劇烈波動,利用預言機餵價不及時的 Bug 在借貸協議抵押套利(也不排是攻擊者本人所為)。
首先,Ankr 或因部署密鑰丟失,導致被攻擊者抓住合約漏洞,憑空鑄造出 10 兆枚 aBNBc。
然後攻擊者將 aBNBc 通過 PancakeSwap 兌換為 500 萬枚 USDC ,導致交易池幾乎被掏空,aBNBc 被砸到接近歸零,隨後攻擊者將資產跨到以太坊,並轉入 Tornado Cash。
與此同時,駭客鑄造 Token 之後的約半小時,aBNBc 暴跌,產生了套利機會——套利者利用借代協議 Helio 的預言機餵價是採用 6 小時平均加時權重的設置,利用 aBNBc 在市場上和在 Helio 系統中的價差將其換成 hBNB,並將 hBNB 質押換出穩定幣 HAY ,並將其換成 BNB 和 USDC。
套利者此舉總共套出超過 1500 萬美元等值的穩定幣和 BNB,基本掏空 hay 的交易對池子,隨後將套出的 BUSD 和 BNB 轉入 Binance。
從這個角度看,攻擊者獲利的原因是 Ankr 的 aBNBc 智能合約自身存在漏洞,而套利者獲利的原因則是 Helio 協議顯然存在預言機餵價問題,其嗅覺敏銳第一時間抓住了這個套利機會。
而且套利者(1700 萬美元)明顯比直接的攻擊(500 萬美元)獲利更豐,所以推特用戶 rick awsb 複盤時也表示,攻擊者如果直接用套利的方式,先套 hay 的利,再賣 aBNBc,則可以至少多賺 1500 萬美元,當然,如果駭客和套利者是同一人,則可以解釋這個疑問。
02 DeFi 世界的「預言機攻擊」
其實這種「預言機攻擊」導致的 DeFi 損失,在 2020 年就已經屢見不鮮,其中最早的典型按理應該可以追溯到 bZx 協議(現已更名為 Ooki)。
2020 年 2 月 15 日,某位攻擊者也是利用 bZx 的借貸等功能,在一個以太坊區塊時間內(不足 15 秒),充分利用 DeFi 樂高——5 個 DeFi 產品之間(dydx、Compound、bZx、Uniswap、kyber)互相的合約調用,在未曾動用自有資金的前提下,一環緊套一環,最終通過在漏洞間操縱價格,成功套利上千枚以太坊。
而整個過程完整發生在 2020 年 2 月 15 日以太坊區塊高度 9484688 期間,堪稱經典:
- 攻擊者先通過閃電貸(Flashloan)從 dYdX 上無抵押貸款了 1 萬枚 ETH;
- 然後攻擊者將其中 5500 個 ETH 在 Compound 上做抵押,借出了 112 枚 WBTC(以太坊鏈上的比特幣封裝資產);
- 同時攻擊者將另 1300 枚 ETH 存入 bZx,發起 bZx 保證金交易,5 倍做空 ETH 的永續空單(ETH/wBTC)——借入 5637.6 個 ETH,通過 Kyber 的 Uniswap 儲備庫,兌換獲得 51.3 枚 WBTC;
- 由於 Uniswap 內 WBTC 深度相對太淺,導致產生極大的滑點,Uniswap 內 WBTC 價格暴漲 3 倍,大幅偏離正常值;
- 然後將第 2 步中借出的 112 枚 WBTC 在 Uniswap 中以大幅偏離正常值的價格集中出售,獲得 6871.4 枚 ETH;
最終 6871.4 枚 ETH+3200 ETH(從未動用)=10000 ETH(歸還 dYdX 貸款)+71.4 ETH(落袋為安),而且由於 wBTC 在第 5 步中被打低,所以攻擊者用大約 4300 枚 ETH 便可兌換 112 枚 wBTC 還清第 2 步的 5500ETH 抵押,從而再淨獲利 1200 枚 ETH;
最終獲利 71.4 ETH + 1200 ETH = 1271.4 枚 ETH。
總的來看,套路是一致的,都是針對預言機進行攻擊,從而利用其它 DeFi 協議依賴預言機喂價的漏洞進行套利:
攻擊者通過操控 Kyber 和 Uniswap 上 WBTC/ ETH 的價格,利用了 bZx 中單一依賴 Uniswap 上的價格進行餵價的漏洞,從而可以以偏離正常值的 3 倍虛高價格賣出 WBTC 以獲利。
某種意義上,如果駭客通過釣魚、撞庫等手段來從 CEX 盜取資產,算是不義之財,那類似地通過 DeFi 的規則來套利,就堪稱明火執仗地賺錢,手段高明但無可置喙。
03 賺麻的「套利者」們
其實回顧今年上半年的 LUNA/UST 歸零之路也是如此,每次發生這種攻擊或市場價格劇烈之際,總有反應遲鈍的鏈上用戶往往通過媒體、Discord 等獲取二手、滯後的信息,從而蒙受損失。
當然也總有反應迅速的用戶能夠第一時間獲悉,然後針對喂價不及時等預言機漏洞進行套利,導致一批借貸、DEX 等 DeFi 協議損失慘重,從而大賺。
Venus 損失 1420 萬美元
今年 5 月 12 日,在 LUNA/UST 進入負螺旋之際,Chainlink 對 LUNA 的價格反饋達到價格下限,並被其以 0.107 美元的價格暫停。
但與此同時,BNB 上借貸協議 Venus 的 LUNA 市場卻在繼續運行,且其關於 LUNA 的餵價正是來自於 Chainlink,這就導致了一個明顯的邏輯漏洞:
LUNA 現貨價格繼續下跌,但 Venus 由於採用 Chainlink 的餵價,卻仍允許用戶按照 LUNA 價格為 0.107 美元的默認情況進行抵押借貸。
直到 4 小時後,現貨價格約為 0.01 美元時,團隊才發現問題並暫停協議,但此間已有用戶通過「預言機攻擊」進行借貸,導致資金損失缺口約 1420 萬美元。
Drift Protoco 損失 1040 萬美元
同樣是 5 月 12 日,受 LUNA 價格劇烈波動影響,Solana 生態永續合約協議 Drift Protoco 的預言機餵價也未能及時跟進二級市場價格的變化,導致用戶能夠從抵押品庫和金庫中以遠低於正常價值的抵押品,提取比他們有權獲得的更多的資金,從而造成 1040 萬美元的損失。
04 小結
仔細複盤會發現,敏銳度高的用戶足以在最開始的第一時間到第一波並迅速獲利了結,進一步驗證了在 Web3 裡敏感度和執行力就是獲利的基本要素。
所以即便做不了技術含量更高的駭客,如果能在資訊繁雜的 Web3 中時刻保持敏銳的嗅覺與果斷的執行力,對 DeFi 的基本原理熟稔於心,高效快速地獲知類似一閃而過的危機,也未嘗不能在 Web3 世界在尋找到類似的機遇。
當然套利者有時候也會面臨被平台鎖定等風險,不排除白忙活一場甚至賠本的可能。
(本文由作者 白話區塊鏈 授權,屬作者之觀點不代表動區立場。文章內容與觀點亦不是投資建議。)