以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > 屎幣 > Info

Web3 底層語言(二):Move 如何避免閃電貸重入攻擊?_以太坊:WEB3

Author:

Time:1900/1/1 0:00:00

作者:宋嘉吉任鶴義,國盛證券研究所

上一篇報告從底層語言特點,對比了Move和Solidity的優勢和特點。作為Web3的基礎性研究,本篇從閃電貸這一最具特色的應用角度出發,分析了以太坊和Move分別如何實現閃電貸,Move怎樣規避了閃電貸攻擊?

以太坊合約之間的交互是通過互通消息實現的狀態一致,且允許重入、動態調用,這一特點為實現閃電貸提供了基礎。期間,合約之間的函數可以互相來回調用——調用過程中會發生控制權轉移。如果DeFi項目平臺合約有漏洞,套利者能夠利用其合約的惡意代碼調用相應函數進行資產盜取——利用合約之間的狀態同步信息差,在一個流程未結束時雙花資產,或者重復執行函數進行盜取。

重入攻擊的前提是攻擊者部署的合約存在惡意代碼,但最核心的因素是:

1)以太坊合約調用時控制權存在轉移,這為惡意合約提供了主動權;

2)且流程在結束之前可以重入,惡意合約可以利用漏洞反復調用函數實現資產盜取;

3)加上以太坊賬戶資產是以數值余額的形式存在,因此存在反復盜取資產的可能,或者在流程結束之前惡意合約就可以修改相關賬戶資產余額數值實現盜取。

Move提出了閃電貸的新一種運行流程——燙手山芋模式,根本上棄用可重入。“燙手山芋”模式是一種沒有key、store、copy和drop能力的結構,是Move程序在交易執行期間僅使用一次的結構。由于沒有drop、key或store能力,因此燙手山芋只能通過調用“銷毀”函數來完結流程——這就如其名所示意的一樣,這是一塊燙手山芋,在流程中任何處置都是“燙手”的,只能交給銷毀函數來完結。具體流程如下:

日本媒體巨頭GREE將在Avalanche上構建Web3游戲并運行節點:10月27日消息,日本游戲公司和互聯網媒體公司 GREE 的子公司 BLRD 宣布 與 Ava Labs 建立了戰略合作伙伴關系,Ava Labs 將幫助推動 BLRD 在區塊鏈游戲領域的發展,提供技術、營銷、業務和生態系統支持,BLRD 計劃于 2023 年推出其第一款 Web3 游戲。此外,GREE 目前運行十幾個 Avalanche 驗證節點,同時持有 AVAX。[2022/10/27 11:49:50]

1)閃電貸智能合約在工作時會創建了“燙手山芋”的收據;

2)套利者向閃電貸合約貸款時,閃電貸合約發送貸款資金和一個燙手山芋收據;

3)套利者利用貸款資金進行套利操作;

4)套利者還款時,調用還款函數,將資金和收據發給還款函數,收據被還款函數接收后銷毀。

閃電貸完成的前提的最后正確還款、流程結束,在流程結束之前惡意合約可以在以太坊系統實現重復調用、修改相應的資產賬戶賦值實現盜取。Move系統閃電貸流程結束的前提除了正確歸還資金之外,還需要將燙手山芋這個資源進行一次性回收銷毀處理,這確保了閃電貸的原子性。

一:核心觀點

閃電貸作為以太坊DeFi生態最具特色的應用,其基礎是以太坊使用的Solidity語言允許動態調用和重入。雖然這種動態調用是智能合約開放性、可組合性的重要體現,但其帶來的控制權轉移和對合約函數的重復調用帶來了不小的安全隱患,行業內利用閃電貸攻擊有漏洞的DeFi資金池事件時有發生。由于Move語言不允許動態調用和重入,它使用一種“燙手山芋”模式很簡單地實現了閃電貸,因此完全可以避免以太坊那樣的安全問題。

社交媒體巨頭Snap宣布解散Web3團隊:金色財經報道,面對急劇下降的增長,Snap(SNAP)正在解散其Web3團隊以削減成本。Snap Web3團隊的聯合創始人Jake Sheinman在周四宣布離開公司的推文中透露了這家社交媒體巨頭的計劃:由于公司重組,我們決定終止我們的Web3團隊。

Snap第二季度營收為11.1億美元,較去年同期增長13%,但遠低于公司此前預測的20%-25%,也低于分析師的預期。周三,Snap首席執行官埃文·斯皮格爾(EvanSpiegel)透露Snap將裁員20%。(coindesk)[2022/9/2 13:03:52]

兩種系統在生態應用的工作模式有著明顯的區別,這種差別的根本在于Move底層語言的特點,我們在前一篇報告《Web3底層語言:Move彌補了Solidity哪些不足?》已有詳述。本篇報告從閃電貸應用角度來比較一下兩者實現應用的不同玩法。

二:以太坊閃電貸的基礎:動態調用與可重入

閃電貸是一種原生的DeFi新產物,可以理解為極速貸款。用戶只需要在同一筆交易中完成借貸、套利、償還并支付一筆手續費,由于是原子交易,那么借款人無需抵押任何資產即可實現借貸,提供了一種無本金套利方案。

我們在上一篇報告《Web3底層語言:Move彌補了Solidity哪些不足?》中提到的:

“對于模塊化和合約組合性方面,Solidity上面的Contract合約通過library進行消息的傳遞,從而實現Contract合約之間的調用、交互。而Move語言使用了模塊(module)和腳本(script)的設計,前者類似于Contract合約,Move語言的合約組合性則是模塊之間的組合,通過傳遞資源。關于組合性方面,Solidity和Move的區別非常明顯。”

Solana Labs將推出web3手機Saga,并設立1000萬美元生態基金:金色財經報道,Solana Labs首席執行官Anatoly Yakovenko在紐約市的一次活動中宣布,其團隊正在開發一款新Android手機Saga,該設備專注于Web3,將包含一個Web3 dapp商店、集成的“Solana Pay”以促進基于二維碼的鏈上支付、一個移動錢包適配器和一個“seed vault”(用于存儲私鑰)。Anatoly Yakovenko表示,它的成本約為1000 美元,計劃于2023年初開始交付。此外,Solana基金會承諾提供1000萬美元,以激勵開發人員利用其Solana Mobile Stack (SMS)構建應用程序。[2022/6/24 1:27:50]

以太坊合約之間的交互是通過互通消息實現的狀態一致,且允許重入、動態調用,就是說合約之間的函數可以互相來回調用——調用過程中會發生控制權轉移。這一特點為實現閃電貸提供了基礎。

具體來說,在一個以太坊交易中,可以進行轉賬操作以及其他一些列合約操作,通過調用智能合約中的功能函數,執行多項復雜功能——也就是說,一筆基于以太坊的交易可以融合一系列復雜交易:將借款、套利、償還等一系列交易操作融合到一起成為可能。

FlashLoan中所有操作都在一個區塊時間中完成,按照現在的以太坊的出塊速度,Merge后也就是12秒——核心并非是12秒,而是這一系列的交易要能夠最終盈利并償還,如果沒有做到這一點,這筆交易就不會被打包寫入區塊,相當于借款人借款、套利這些操作并不是有效交易,只是臨時狀態——即原子交易。因此,用戶必須通過編程將需要執行的所有步驟形成一項智能合約交易并完成借貸、使用和償還的三個步驟。

沃爾瑪成立探索元宇宙和Web3的創新部門:金色財經報道,沃爾瑪旗下電子商務公司 Flipkart India Pvt. 成立名為 Flipkart Labs 的內部創新部門,旨在探索向元界與 Web3 擴展的方法。未來將探索 NFT、虛擬沉浸式商店,并建立與 web3 社區的合作,并為虛擬世界中的商業設定標準。Flipkart Labs 產品戰略和部署副總裁 Naren Ravula 表示,Web3 將對電子商務解決方案產生深遠影響。(彭博社)[2022/4/29 2:38:07]

上述復雜的交易操作由幾個合約之間的動態調用實現,且這種調用是可重入的。

目前用戶也可以通過如FURUCOMBO這一類第三方項目,對閃電貸完成更簡易的插件性編程,無需實際編寫代碼完成智能合約的設計,最終實現閃電貸需要的全套操作。具體的套利流程如下圖所示,目前Kyberswap平臺上的價格情況1sUSD=0.9927DAI,而Uniswap上1DAI=1.2411sUSD,用戶發現這兩個平臺的DAI-sUSD交易對價格存在較大的套利空間,即可通過FURUCOMBO的界面,設計套利過程。

包括:1、從AAVE借貸平臺的閃電貸功能借出100DAI;2、通過Uniswap將100DAI兌換成約122個sUSD代幣;3、通過Kyberswap平臺將sUSD代幣兌換成約122DAI代幣;4、償還從AAVE借出的100DAI代幣以及手續費0.09DAI;5、整個利用閃電貸的套利流程在一個以太坊交易內完成,并獲利約22DAI。

如果在這一筆以太坊交易內借貸的資金沒有得到償還,那么整筆借貸交易不會被打包進入區塊中,相當于借貸并沒有實際發生,所以借貸方的資金不會受任何影響——中間的借貸和套利過程只是臨時狀態,并未被礦工打包確認。

Web3及加密通信協議XMTP完成2000萬美元A輪融資,a16z領投,Coinbase Ventures等參投:9月1日,Web3及加密通信協議XMTP宣布完成2000萬美元A輪融資,a16z領投,Coinbase Ventures、Not Boring Capial、SK Ventures、Offline Ventures、StarkWare、Anthony Pompliano、Anthony Sassano (The Daily Gwei)、Kain Warwick (Synthetix)、Kayvon Beykpour (Twitter)、Stani Kulechov (Aave)、Robert Leshner (Compound Labs)、Roham Gharegozlou (Dapper Labs)、Ryan Sean Adams (Bankless)、Ryan Selkis (Messari) 等基金與天使投資人參投。

據悉,這筆資金將用于擴充 XMTP 團隊規模,并將幫助 XMTP 通過其獨立協議和去中心化網絡實現加密錢包間的通信。[2021/9/1 22:51:44]

基于閃電貸的特性和時效要求,目前其最廣泛的應用是套利交易。套利者無需自身使用資產進行套利操作,只需要通過閃電貸獲得所需的資金量完成套利交易,并及時償還借貸的資金。這極大的降低了套利者的準入門檻,因為理論上任何一個人都可以成為套利者,并且擁有沒有上限的套利資金進行操作。

從上述流程可以看到,以太坊合約控制權在FURUCOMBO閃電合約-套利者賬戶合約-Uniswap合約-Kyperswap合約-閃電貸合約之間切換,且可以進行動態調用相應的函數,如果DeFi項目平臺合約有漏洞,套利者能夠利用其合約的惡意代碼調用相應函數進行資產盜取——利用合約之間的狀態同步信息差,在一個流程未結束時雙花資產,或者重復執行函數進行盜取。

對于Move生態,由于資產并非簡單的賦值,且禁止動態調用和可重入,從根本上杜絕了風險,其具體實現我們在后面會闡述。

三:Move與Solidity閃電貸的具體實現有怎樣的區別?

3.1.以太坊閃電貸雙刃劍:動態調用和可重入性

從實現方式上來看,以太坊EVM具有動態調度,可以通過可重入實現閃電貸。如我們在上一篇報告《Web3底層語言:Move彌補了Solidity哪些不足?》中提到的:

“以太坊的資產是由相應的合約控制,如果把TokenA合約比喻為保險箱,保險箱會給所有用戶分配一個數值余額,來表達用戶所有擁有的TokenA資產數量,但資產本身還是放在TokenA合約的保險箱內。而Move用戶賬戶本身就是一個單獨的大保險箱,由用戶自己控制,所有的Token資產都放在這個保險箱內。且這些Token并不是以數字的形式存在,而是不可復制的、權限受用戶控制的資源。”

因此以太坊EVM實現閃電貸套利的流程是:

1)用戶將調用控制權交給閃電貸合約;

2)閃電貸合約調用來自外部的套利合約程序中的執行函數,將請求的借款金額發送給套利合約,套利合約進行套利操作;

3)套利合約完成套利,將借款歸還給閃電貸合約,執行函數完成工作,控制權還給閃電貸合約;

4)閃電貸合約檢查還款金額是否正確,正確則套利交易成功,否則失敗。

在上面這個過程中,相應的函數是動態調用的,閃電貸合約需要檢查歸還金額是否正確才會結束,因此控制權的轉移過程是隨時可以發生的,也就是可重入的——同時需要注意的事,以太坊賬戶資產是以數值余額的形式存在,重入會帶來雙花的可能,這也是存在漏洞的地方。調用外部合約的主要危險之一是它們可以接管控制,而這些來自外部的合約程序一旦有漏洞,攻擊者可以通過反復調用實現攻擊,即可重入攻擊。

可重入攻擊造就了以太坊歷史上最嚴重攻擊之一,直接導致了以太坊分叉,即2016年6月17日的TheDAO崩潰事件。黑客部署了一個合約,作為“投資者”在TheDAO中儲存一些ETH。然后黑客通過調用TheDAO合約中的withdraw函數,使得TheDAO合約給黑客提款,由于黑客合約存在惡意漏洞——其沒有結束的邏輯,于是TheDAO始終未能完成提款并拿回控制權,黑客通過不斷調用withdraw函數發送超過其初始存款ETH數量。

在閃電貸攻擊事件中,攻擊者往往通過惡意合約實現可重入攻擊。如2022年3月16日,黑客通過閃電貸借款,利用借貸項目HundredFinance的漏洞實時重入攻擊,最終獲利約2363ETH。具體流程并不復雜,由于HundredFinance是先轉賬后記賬,黑客通過閃電貸借款,利用攻擊合約存入HundredFinance借款池實現抵押貸款。

而攻擊合約部署的onTokenTransfer函數在記賬之前實現重復調用借款函數,以一筆抵押資產不斷從不同借款池提取借款,由于是先轉賬后記賬,當記賬時黑客已經實現了攻擊并獲利。攻擊的核心是:流程未結束之前,攻擊者合約可以反復調用相關函數實現資產盜取。

就好比說,攻擊者合約將資產抵押給A銀行,這時候資產被A入庫記賬。

但由于銀行A和其他銀行之間的信息不同步,攻擊者在A銀行還未完成資產入庫記賬時,再次以該資產在B、C等其他銀行進行抵押貸款,待流程結束,攻擊者已經完成閃電貸攻擊并獲利。

重入攻擊的前提攻擊者部署的合約存在惡意代碼,但最核心的因素是:

1)以太坊合約調用時控制權存在轉移,這為惡意合約提供了主動權;

2)且流程在結束之前可以重入,惡意合約可以利用漏洞反復調用函數實現資產盜取;

3)加上以太坊賬戶資產是以數值余額的形式存在,因此存在反復盜取資產的可能,或者在流程結束之前惡意合約就可以修改相關賬戶資產余額數值實現盜取。

可重入”是實現閃電貸的基“礎,然而一旦目標合約有漏洞,攻擊者便可以實施重入攻擊。這在我們前一篇報告中有詳述。

3.2.MOVE的“燙手山芋”:沒有重入的閃電貸

Move語言禁止動態調用和可重入,這從根本上杜絕了重入攻擊。但Move系統的資產作為資源類型,一旦借出就相當于發生了真實轉移,該如何確保閃電貸順利還款呢?

Move提出了閃電貸的新一種運行流程——燙手山芋模式,根本上棄用可重入。“燙手山芋”模式是一種沒有key、store、copy和drop能力的結構,是Move程序在交易執行期間僅使用一次的結構。由于沒有drop、key或store能力,因此燙手山芋只能通過調用“銷毀”函數來完結流程——這就如其名所示意的一樣,這是一塊燙手山芋,在流程中任何處置都是“燙手”的,只能交給銷毀函數來完結。具體流程如下:

1)閃電貸智能合約在工作時會創建了“燙手山芋”的收據;

2)套利者向閃電貸合約貸款時,閃電貸合約發送貸款資金和一個燙手山芋收據;

3)套利者利用貸款資金進行套利操作;

4)套利者還款時,調用還款函數,將資金和收據發給還款函數,收據被還款函數接收后銷毀。

我們在前一篇報告中已經分析過,賬戶資產和收據都是一種資源類型,“不能復制、丟棄或重用,可以被安全地存儲和轉移”,因此收據必須被處理,而非像以太坊那樣的對賬戶進行數值賦予處理就行。

因此燙手山芋模式可以確保被借出的資產必須被歸還。收據作為燙手山芋,就好比是定時一個引爆器,資金和引爆器一起綁定被借出,而任何一方都無法收留引爆器,它必須被還回原處得以拆除——否則交易都無法完成,因此閃電貸資金可以確保會被歸還。

閃電貸完成的前提的最后正確還款、流程結束,在流程結束之前惡意合約可以在以太坊系統實現重復調用、修改相應的資產賬戶賦值實現盜取。Move系統閃電貸流程結束的前提除了正確歸還資金之外,還需要將燙手山芋這個資源進行一次性回收銷毀處理,這確保了閃電貸的原子性。

從應用角度看,Web3的底層代表要在保證開放性、可重構的基礎上提高代碼安全性。在Web3中,代碼不僅包含信息,還直接涉及資產調用,保證用戶資產安全是重中之重,否則Web3將是黑暗森林。以太坊的生態讓大家看到了智能合約的活力,下一個時代將在此基礎上向安全性、合規性繼續演進,這也是我們當下關注Web3底層語言進化的核心邏輯,或者這孕育著下一輪的創新浪潮。

Tags:以太坊WEB3MOVMOVE以太坊價格今日行情美元實時WEB3幣movez幣值得投資嗎Movey Token

屎幣
DYDX 關于“關閉現有安全質押模塊”提案已通過_DYDX:SSM

DYDX關于“關閉現有安全質押模塊(SSM)”提案DIP17已獲得通過,此前dYdX安全質押模塊允許用戶質押DYDX,在協議出現流動性短缺事件的情況下提供保險能力,該模塊將被關閉.

1900/1/1 0:00:00
CoinList 推出新功能 Wallet Link,本周將與 Nomad 合作向受攻擊影響用戶返還資金_OIN:txbcoin

CoinList宣布推出新功能WalletLink,支持用戶將其鏈上身份與CoinList的驗證身份相連接.

1900/1/1 0:00:00
Ambrus Studio:Web3 游戲是否有望成為中國下一個大事件?_WEB3:WEB

作者:AmbrusStudio2021年是Web3高歌猛進的一年,層出不窮的新項目、新玩法與節節攀升的項目估值、屢創紀錄的收益率共同推動Web3市場快速加溫.

1900/1/1 0:00:00
Ankr 發布被攻擊事件進展說明:1500 萬美元恢復基金將用于購買增發的 HAY 并補償受損用戶_BANK:LBank交易所

Ankr團隊發推表示,將對受此次攻擊事件影響的用戶和合作伙伴負責,團隊正在24小時不間斷的努力去處理和協商所有的賠償事宜。Helio將全權負責由于aBNBc被攻擊導致的約1500萬美元壞賬.

1900/1/1 0:00:00
《Web3的發展與趨勢》:新加坡峰會論壇_NCE:web3.0幣狗狗幣

鏈接 Web3被譽為互聯網的未來,在2021年開始獲得世界關注。區塊鏈、加密貨幣、去中心化金融、NFT、DAO等等一切幾乎被Web3所涵蓋,這也導致Web3成為人們對于未來生活的暢想.

1900/1/1 0:00:00
Mask Network:讓 Web3 成為人們的日常生活_MASK:NFT

作者:GoPlus中文社區Web3是一種新型態的網絡技術,代表了下一代互聯網,它鼓勵價值創造,預示著無限可能性.

1900/1/1 0:00:00
ads