比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > 幣安幣 > Info

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

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能力,因此燙手山芋只能通過調用“銷毀”函數來完結流程——這就如其名所示意的一樣,這是一塊燙手山芋,在流程中任何處置都是“燙手”的,只能交給銷毀函數來完結。具體流程如下:

報告:第二季度Web3協議因黑客和攻擊造成的損失從去年同期略有下降:金色財經報道,據CertiK報告,第二季度Web3協議因黑客和攻擊造成的損失從去年同期的7.45億美元下降到3.135億美元,下降了58%。CertiK在一份聲明中表示,網絡安全漏洞造成的資金損失的減少表明Web3行業的技術防御和安全協議正在變得更加有效。加密貨幣交易所、區塊鏈網絡和個人開發者可能會實施更強大的安全措施,并在威脅檢測、漏洞管理和事件響應等領域進行投資。與今年第一季度相比,總虧損額為3.3億美元,略有下降。[2023/7/6 22:19:55]

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

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

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

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

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

一:核心觀點

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

香港金管局前總裁陳德霖擔任香港 Web3.0 協會會長:金色財經報道,在香港 Web3.0 協會成立典禮上,香港立法會主席梁君彥為金管局前總裁陳德霖頒發香港 Web3.0 協會會長委任證書,中國工程院院士陳純、中國移動香港董事長李鋒、互聯網專業協會永遠名譽會長陳少杰擔任香港 Web3.0 協會榮譽會長,香港科技大學副校長汪揚擔任首席科學顧問,財經事務及庫務局前局長陳家強擔任首席金融顧問。[2023/4/11 13:56:45]

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

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

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

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

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

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

耐克Web3平臺.SWOOSH將獎勵虛擬運動鞋創作者:金色財經報道,全球鞋業品牌耐克新推出的NFT平臺.SWOOSH周三表示,正在邀請用戶設計自己的數字可穿戴設備。.SWOOSH 社區成員受邀參加名為#YourForce1 的競賽,挑戰用戶在 Instagram 上制作視覺故事板來展示他們的鞋類設計。如果被選中,四名獲勝者每人將獲得 5,000 美元的獎金,并有機會直接與耐克設計師合作,打造他們自己的一對一數字運動鞋。

耐克補充說,這四種設計可能會成為其計劃在不久的將來推出的首個簽名系列的一部分。比賽于今天開始,1 月 29 日結束。耐克花了幾年時間來研究其 Web3 戰略。在11 月發布 .SWOOSH之前,該公司收購了數字時裝公司 RTFKT,邁出了進入元宇宙的第一步。2020 年,耐克表示將開始測試與區塊鏈技術相關的 RFID,以追蹤供應鏈流程。[2023/1/26 11:30:37]

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

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

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

區塊鏈Lamina1為Web3建設者推出滾動基金:金色財經報道,由科幻作家Neal Stephenson和區塊鏈專家Peter Vessenes為重點的第一層區塊鏈Lamina1正在推出Lamina1生態系統基金(L1EF),為Web3建設者提供一個為元宇宙企業籌集資金的工具,并為投資者提供在基層參與項目的機會。

L1EF已經在AngelList上推出,這是一個風險平臺,允許初創企業從天使投資者那里籌集資金。該平臺提供滾動基金,允許感興趣的投資者通過季度訂閱來資助項目。L1EF提供的認購起價為每季度2500美元,最低期限為四個季度。(coindesk)[2022/12/22 22:00:18]

目前用戶也可以通過如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。

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

Astar Network背后公司獲Web3基金會資助:波卡生態DApp平臺AstarNetwork(原PlasmNetwork)宣布其背后核心公司StakeTechnologies獲得Web3基金會資助,將使用該筆資金幫助波卡開發人員輕松在Substrate上實施零知識證明系統ZKPlonk。ZKplonk被稱為通用zkSNARK,最初由Aztec和ProtocolLabs共同提出,用于優化zk-SNARK的問題,比如,參考字符串是通用的,不需要為每個創建的Circuit重新創建可信設置。[2021/7/13 0:48:59]

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

從上述流程可以看到,以太坊合約控制權在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:以太坊MOVMOVEWEB3以太坊價格走勢圖MOVX價格movez幣天天跌web3幣圈

幣安幣
NFT:Mint Ventures:2022年NFT賽道發展回顧

作者:JessicaShen,MintVentures一、2022年NFT市場 2020年-2022年NFT交易量及市值情況2020到2022年,NFT行業在短短2年內經歷了許多變化.

1900/1/1 0:00:00
GET:Getaverse 測試網即將上線,推出節點計劃

作者:GetaverseGetaverse是基于多條公鏈進行開發部署的區塊鏈信用系統,旨在打造基于Web3.0數字認證引擎協議的元宇宙生態服務平臺.

1900/1/1 0:00:00
EFI:專訪 DeFi 之父 AC:“最終,我極有可能入獄”

原文標題:《AndreCronje:TheriseandfallofaDeFigod》作者:PaigeAarhus,DLNews編譯:wesely,DeFi之道在迪拜一個封閉社區的家中.

1900/1/1 0:00:00
BIN:Binance Research:Layer1 賽道 2022 發展總結及未來展望

原文標題:《2023CMCCryptoPlaybook:Layer-1?s—WhatHasHappenedandWhereAreWeHeaded?》來源:BinanceResearch 編譯:D.

1900/1/1 0:00:00
NFT:從 Metaka Wars 的“侵權”事件分析 NFT 市場版權問題

作者:區塊鏈藍海 近幾年NFT領域不斷發展,得益于區塊鏈的開放特性,每個人都可以成為創作者。很多藝術家也將自己的作品通過NFT的形式上傳至區塊鏈上,在各大平臺中“發行”,還有很多創作者基于一些知.

1900/1/1 0:00:00
BIT:激活東南亞 Web3 生態創新,AC Capital 主辦 DemoDay 成功舉辦

作者:ACCapital2022年11月27日,亞洲Web3風險投資機構ACCapital和Mesolabs主辦的“GenesisDemoDay”正式落幕.

1900/1/1 0:00:00
ads