半個月內,發生在DeFi協議上的閃電貸攻擊一起接著一起,閃電貸成了黑客借來生「金蛋」的雞。
進入11月,Value DeFi、起源協議Origin Protocol、Akropolis和Cheese Bank都遭到了閃電貸攻擊,總損失額超過1000萬美元。
Value DeFi的前身是被稱為「五姨夫」的YFV,它的損失超過540萬美元,這還是黑客「歸還」了200萬美元後的結果。頗有戲劇性的是,在被攻擊前一天,該團隊曾公開表示Value是最安全的DeFi項目,隨後便被黑客「光顧」。
成都鏈安解釋,「閃電貸攻擊」指利用閃電貸和其他漏洞結合後,進行套利和操縱價格等攻擊。 「閃電貸本身不是漏洞,不過作惡者可以利用它,以極低的成本撬動巨量資金,在多個協議間進行價格操縱或套利。」
區塊鏈開發者小島美奈子認為,黑客能輕易操縱價格的原因是DeFi協議沒有採用安全的預言機策略,即當預言機傳達數據失真時,攻擊便極易發生。另有行業人士點出本質,DeFi協議在實現本身的功能時,採用單一市場價格反饋的設計極其危險。
「因為是新的事物,很多項目在設計時並未充分考慮到這方面風險。」成都鏈安提示,項目方在業務邏輯設計時,應當考慮這類極端情況,必要時應找專業的審計機構審計。
4天內兩DeFi協議遭「閃電貸攻擊」
11月17日,起源協議Origin Protocol的穩定幣OUSD遭閃電貸攻擊,價格最低跌至0.13美元。此次攻擊使得Origin Protocol共計損失了225萬美元的DAI和100萬美元的ETH。
就在這起安全事故的3天前,DeFi協議Value DeFi也被黑客「光顧」,裡面也涉及到閃電貸這一工具。
11月14日23點36分, Value DeFi 的MultiStables機槍池遭受黑客攻擊,損失將近740 萬美金的DAI。此前,Value DeFi曾在社交平台宣布自己是最安全的DeFi,結果立馬被打臉。黑客在完成攻擊後還返還了200萬美元,並以「do you really know flashloan(閃電貸)」的提問發出嘲諷。
Value DeFi的MultiStables機槍池正常頁面
閃電貸似乎成了黑客近來最得心應手的工具。今年以來,多起DeFi的安全事故都被安全機構指出利用了「閃電貸攻擊」,受害項目方包括bZx、Balaner、Havest、Akropolis、Cheese Bank等,以及最近的Value DeFi和Origin Protocol。
「開發者還沒有了解以太坊的特性,」區塊鏈開發者小島美奈子認為,頻頻發生閃電貸攻擊是因為項目開發者對此缺乏了解。
閃電貸是什麼?利用它的攻擊到底是怎麼發生的?
Jeff是區塊鏈安全公司PeckShied 矽谷研發中心負責人,他對蜂巢財經介紹,區塊鏈上的閃電貸是一種「不需要抵押就可以藉貸」的貸款方式,但貸方必須在同一區塊內還貸,否則這個交易就會失敗。所以閃電貸對借款平台來說基本是零成本、零風險。而黑客就可以利用這樣的貸款方式,以很小的成本借出大筆資金,然後用這筆資金去造成一些數字資產的價格波動,再從中漁利。
根據安全機構的梳理,我們可以清楚地從Value DeFi的這起攻擊中,看到閃電貸攻擊的運作方式。
當晚,黑客先通過Aave 的閃電貸功能藉來8萬枚ETH,緊接著通過UniswapV2上的閃電貸借來1.16億枚DAI。借來大把錢後,黑客開始在Curve和Value DeFi上操縱價格進行套利。
選擇這兩個協議,黑客是利用了它們之間的關聯——Curve上有USDC的兌換池,要想在Value DeFi合成資產3CRV,也需要用到USDC。
在Curve上,黑客主要是用閃電貸借來的錢抬高USDC的價格,一度讓這個美元穩定幣脫錨上漲至1.788美元。而在Value DeFi上,黑客將一部分DAI存入該協議的機槍池中,鑄造出名為3CRV的合成資產。
Value DeFi機槍池合約中有3種合成資產,分別是3CRV、bCRV和cCRV,為了方便計價,該協議合約在鑄幣時會將bCRV、cCRV轉換成3CRV 進行計價,轉換途徑需先將bCRV/cCRV換成USDC,再把USDC換成3CRV。
問題就出在這裡。由於Value DeFi以Curve的價格作為預言機,而Curve上USDC的價格已經大幅上漲。因此,當攻擊者發起3CRV提現時,合約會照常將bCRV、cCRV 轉換成以3CRV計價,但此時USDC/3CRV 的價格被操作拉高,導致用bCRV、cCRV 能兌換出更多的3CRV。
黑客正是憑此完成了套利,在歸集資產、還完閃電貸後,空手套利740萬美元。
簡單來說,整個過程中,閃電貸本身正常運行,但黑客先後利用Aave、UniswapV2的閃電貸功能藉出一大筆錢,再通過Curve操縱USDC的價格,影響Value DeFi的功能,鑄幣套利。
預言機策略失當是風險源頭
從Value DeFi的失竊案例看,它被攻擊主要是由於預言機出了問題。實際上,被攻擊時只是Curve上的USDC價格出現了短暫偏差,其他市場的USDC價格並沒變。但由於Value DeFi採用的是Curve現貨價格作為預言機,才導致了套利空間的出現。
小島美奈子認為,防範閃電貸攻擊,需要協議開發者使用安全的預言機(Oracle)策略。但怎樣才算得上是安全的預言機策略?這正是目前開發者需要持續探索的難題。
由於閃電貸攻擊頻頻發生,這個功能被一些人貼上了黑標籤。有人認為,閃電貸是危險的工具;還有人覺得,它只是讓協議的漏洞更早暴露出來,對協議的安全提升有益。
Chainlink 的CMO Adelyn Zhou便是帶著發展的眼光來看待閃電貸的兩面性。他認為,閃電貸的新奇之處在於,它可以讓世界上任何一個人短暫地成為資金充裕的交易者,當然,這也讓這個人具備了突然操縱市場的可能性。但本質上,「閃電貸攻擊」這個詞並沒有抓住問題的全部。閃電貸本身不是漏洞,它只是揭示了DeFi存在已久的系統性風險。
Adelyn Zhou與小島美奈子的觀點一致,即閃電貸攻擊往往只是對價格預言機的攻擊,「DeFi生態系統中真正的系統性風險是圍繞著中心化的Oracle,而不是閃電貸。」因此,Adelyn Zhou認為,「閃電貸攻擊」這種說法分散了關注點,一些擁有數億美元TVL(鎖倉量)的DeFi協議仍然依賴於單一交易所的價格反饋Oracle,這才是導致價格容易被操縱的根源。
這其實與一些中心化交易所合約市場被操縱的情況類似。
去年5月,Bitstamp交易所BTC現貨價格閃崩,導致合約交易平台Bitmex短時爆倉2萬個比特幣,時值1.5億美元。這是因為,Bitmex的BTC合約指數成分中採用了Bitstamp的BTC現貨價格,且權重達50%。而在OKEx的合約指數成分中,採用了4個以上的交易所現貨價格,且權重分散,因此受到的影響較小。
這或許能給予DeFi開發者們一些啟示——要在價格預言機這一源頭上下功夫,才能避免因預言機傳達失真數據而帶來的價格操縱風險。
Jeff則提供了另一種預防方案,他介紹,根據閃電貸的特性,借貸和取款都要在一個區塊內完成,所以對DeFi協議開發方來說,更穩妥的設計是不允許在同一個區塊內存款和取款,這樣試圖利用閃電貸的黑客便無計可施。
作為一種新的、不存在於傳統金融世界的借貸模式,閃電貸通過區塊鏈被創造,頗有創新意義,但它不應成為黑客的幫兇。 DeFi協議開發者理應在頻頻發生的「閃電貸攻擊」中吸取教訓。成都鏈安提示,項目方在業務邏輯設計時,應當考慮這類極端情況。如果對此不了解,應找專業的審計機構進行審計和研究,防範各種可能的風險。