精析DeFi協議Warp Finance“預言機”攻擊事件

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

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

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

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

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

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

4、在Warp Finance錯誤的數據環境下,攻擊者竊取了遠遠超過抵押品價值的資產,

5、攻擊者歸還了從閃電貸中借出的款項。

攻擊交易地址

0x8bb8dc5c7c830bac85fa48acad2505e9300a91c3ff239c9517d0cae33b595090

攻擊過程精析

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

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

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

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

完成抵押后,攻擊者利用借來的資金,將Uniswap DAI 2池中的DAI兌換殆盡,如下圖所示:

上述“準備工作”完成后,價格已處于被操縱狀態,另一方面,Warp Finance的預言機喂價源是來自Uniswap LP代幣的價格數據,代碼如下圖:

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項目運行中存在安防方面的任何技術問題,采取第三方安全技術解決方案不失為一種行之有效的辦法。最后,成都鏈安再次呼吁,要加強對項目預言機等多方面的定期安全檢測,以防范此類事件的再度發生,

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧