精析DeFi協議Warp Finance“預言機”攻擊事件
成都链安
2020-12-18 10:45
本文约1745字,阅读全文需要约7分钟
在當前黑客眾多的攻擊手法中,“預言機”餵價控制才是隱形的“元兇”。

北京時間12月18日6時許,DeFi借貸協議Warp Finance遭到黑客攻擊,造成了近800萬美元的資產損失。

同時,Warp Finance官方也發布推文表示,已在調查違規貸款情況,並建議用戶暫停穩定幣的存入,直到事件真相明朗。

成都鏈安團隊在接到區塊鏈安全態勢感知平台(Beosin-Eagle Eye)報警後,第一時間對本次攻擊事件進行了調查,結果發現:

1、Warp Finance使用的是Uniswap交易對的相對價格作為其預言機的餵價源。

2、攻擊者在了解到這個情況後,使用從閃電貸中獲取的巨額資金操縱了Uniswap交易對的價格。

3、通過控制預言機餵價源信息,攻擊者破壞了Warp Finance的借款價值判斷標準。

二級標題

二級標題

二級標題

0x8bb8dc5c7c830bac85fa48acad2505e9300a91c3ff239c9517d0cae33b595090

攻擊過程精析

攻擊者首先利用Uniswap進行閃電貸借款,並採用鑲嵌式(還款前連續操作)的手法,在WBTC2、USDC3以及USDT2池中分別進行了WETH借貸,如下圖所示:

其後,為擴大用於攻擊的資金量,攻擊者又在dYdX進行了閃電貸借款。如下圖所示:

此時,借出的資金規模已高達近2億美元.接下來,攻擊者向Uniswap的DAI 2交易池中註入流動性,獲取了流動性代幣LP,如下圖所示:

然後,將所獲的LP代幣抵押在Warp Finance合約中,交易及代碼如下圖:

二級標題

二級標題

LP代幣價格算法

(A代幣的價格×A代幣池中的持有量+B代幣的價格×B代幣池中的持有量)/LP代幣的總量

其中,A代幣與B代幣的價格是由Uniswap的“對應代幣與穩定幣”交易對計算得出。

因此,在上述情況下,A、B代幣的價格處於正常水平、而交易對中的A、B代幣相對價格則已經發生異常。這是因為Uniswap採用恆定乘積做市商機制,即A×B=K。當出現大量的兌換某一種代幣時,就會產生巨大的滑點,從而產生價差。

假設:A=A代幣數量;B=B 代幣數量;AP=A代幣價格;BP=B代幣價格

已知:A×B=k(在未添加流動性時K恆定);Warp價格=(AP×A+BP×B)/totalLP

因AP和BP在本事件中皆為恆定,故可設AP=X1×BP,化簡可得Warp價格=((X1×K)/B+B)×BP/totalLP

可得結論為,X1×K 、BP和totalLP在攻擊中都是常數,隨著B的數量增大,LP價格就會提高。

攻擊者正是利用了這一點,使用從閃電貸獲取的巨額資金在交易池中海量添加其中一種代幣的流動性,迫使另一種代幣也隨之巨增,從而引發LP的價格失衡。由於LP價格已被操縱,處於一個高位,因此,攻擊者可以藉出相比正常量更多的資產。

二級標題

二級標題

事件小結

很明顯,這又是一起典型的由閃電貸巨款發起的預言機攻擊事件。成都鏈安曾撰文指出,在當前黑客眾多的攻擊手法中,“預言機”餵價控制才是隱形的“元兇”。

同時,成都鏈安也鄭重提醒DeFi開發者,應加強預言機的針對性測試,特別是在項目上線前,盡可能模擬價格操控攻擊的各類場景,及時發現問題並找出解決方案,切實提高項目抗預言機攻擊的能力。

短短一個月後,巨額的財產損失再一次告誡我們,在區塊鏈領域中,安全防護工作尤為重要,許多系統安全漏洞屬於防不勝防。因此,我們必須採取積極措施形成連續、有效的保護方案,才能在最大程度上提前規避問題。

此外,如在DeFi項目運行中存在安防方面的任何技術問題,採取第三方安全技術解決方案不失為一種行之有效的辦法。最後,成都鏈安再次呼籲,要加強對項目預言機等多方面的定期安全檢測,以防範此類事件的再度發生。

成都链安
作者文库