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

MOV:Move 如何避免閃電貸重入攻擊?

Author:

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

撰文: 宋嘉吉、任鶴義

來源:吉時通信

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

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

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

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

且流程在結束之前可以重入(重復調用),惡意合約可以利用漏洞反復調用函數實現資產盜取(如一筆取款流程未結束時反復提取很多次);

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

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

Astar先行網Shiden與Moonriver間開通HRMP通道,可轉移MOVR:8月5日消息,波卡平行鏈Astar Network宣布其先行網Shiden Network與Moonriver之間已開通新的HRMP通道,可將MOVR從Moonriver轉移到Shiden Network,新的流動性可以在其EVM環境中使用,也可以與WASM智能合約一起使用。Shiden Network表示,將開放更多通道,正準備啟動WASM項目。[2022/8/5 12:05:08]

閃電貸智能合約在工作時會創建了「燙手山芋」(hot-potato)的收據(receipt);

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

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

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

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

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

瑞典足球明星Zlatan Ibrahimovic將11個NFT引入OVR元宇宙平臺:金色財經報道,瑞典足球明星Zlatan Ibrahimovic宣布建立新的合作伙伴關系,將11個NFT引入OVR元宇宙平臺,OVR是一個元宇宙平臺,提供地理定位的AR/VR體驗。

據悉,該系列的11個NFT與足球運動員的球衣號碼一樣,由來自繪畫界及其他領域的11位杰出藝術家創作的11幅不同作品組成。除了Giovanni Frangi和Federico Guida等知名從業者,Giuseppe Veneziano、Giovanni Motta和Ivan Tresoldi等多種媒體的杰出藝術家也參與其中。(the crypto basic)[2022/3/16 14:00:28]

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

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

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

「對于模塊化和合約組合性方面,Solidity(如以太坊)上面的 Contract 合約通過 library(相當于靜態庫)進行消息的傳遞,從而實現 Contract 合約之間的調用、交互。而 Move 語言使用了模塊 (module) 和腳本 (script) 的設計,前者類似于 Contract 合約,Move 語言的合約組合性則是模塊之間的組合,通過傳遞資源(即前文提到的 resources)。關于組合性方面,Solidity 和 Move 的區別非常明顯。」

Moves創始人:區塊鏈將使金融服務更可用、更安全且更公平:金融科技公司Moves的創始人及首席執行官Matthew Spoke在福布斯刊文稱,雖然區塊鏈不能解決失業問題或生活成本超過工資所導致的問題,但它可以用來使金融服務和產品更容易獲得、更安全且更公平。它還通過保持低費用,并確保每一筆交易都是平等的來促進金融包容性。[2020/9/22]

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

具體來說,在一個以太坊交易中,可以進行轉賬操作以及其他一些列合約操作,通過調用智能合約中的功能函數,執行多項復雜功能——也就是說,一筆基于以太坊的交易可以融合一系列復雜交易:將借款、套利、償還等一系列交易操作融合到一起成為可能。Flash Loan 中所有操作都在一個區塊時間中完成,按照現在的以太坊的出塊速度,Merge 后也就是 12 秒——核心并非是 12 秒,而是這一系列的交易要能夠最終盈利并償還,如果沒有做到這一點,這筆交易就不會被打包寫入區塊,相當于借款人借款、套利(失敗)這些操作并不是有效交易,只是臨時狀態——即原子交易。因此,用戶必須通過編程將需要執行的所有步驟形成一項智能合約交易并完成借貸、使用和償還的三個步驟。

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

目前用戶也可以通過如 FURUCOMBO 這一類第三方項目,對閃電貸完成更簡易的插件性編程,無需實際編寫代碼完成智能合約的設計,最終實現閃電貸需要的全套操作。具體的套利流程如下圖所示(利用 FURUCOMBO 平臺,具體兌價均為示例),目前 Kyberswap 平臺上的價格情況 1 sUSD =0.9927 DAI,而 Uniswap 上 1 DAI=1.2411 sUSD,用戶發現這兩個平臺的 DAI-sUSD 交易對價格存在較大的套利空間,即可通過 FURUCOMBO 的界面,設計套利過程。包括:1、從 AAVE 借貸平臺的閃電貸功能借出 100 DAI;2、通過 Uniswap 將 100 DAI 兌換成約 122 個 sUSD 代幣;3、通過 Kyberswap 平臺將 sUSD 代幣兌換成約 122 DAI 代幣;4、償還從 AAVE 借出的 100 DAI 代幣以及手續費 0.09 DAI;5、整個利用閃電貸的套利流程在一個以太坊交易內完成,并獲利約 22 DAI。

分析師Tanya Abrosimova:短期反彈看至7000-7200美元區間 長期來看未改下行趨勢:據fxstreet報道,分析師Tanya Abrosimova稱,從長期來看,BTC 從2018年的低點回升,但上行動能不足,意味著BTC可能上漲至7000-7200美元區間,并未改變利空趨勢,如果下行跌破6000美元,那么長期看跌到4000美元。[2018/6/15]

如果在這一筆以太坊交易內借貸的資金沒有得到償還,那么整筆借貸交易不會被打包進入區塊中,相當于借貸并沒有實際發生,所以借貸方的資金不會受任何影響——中間的借貸和套利過程只是臨時狀態,并未被礦工打包確認。基于閃電貸的特性和時效要求,目前其最廣泛的應用是套利交易。套利者無需自身使用資產進行套利操作,只需要通過閃電貸獲得所需的資金量完成套利交易,并及時償還借貸的資金。這極大的降低了套利者的準入門檻,因為理論上任何一個人都可以成為套利者,并且擁有沒有上限的套利資金進行操作。

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

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

分析師Tanya Abrosimova:BTC可能重新測試周二低點6450美元 最終看跌至5873美元:據fxstreet報道,分析師Tanya Abrosimova稱,BTC可能重新測試周二低點6450美元,如果跌破,可能下行至6000美元支撐位,最終看跌至5873美元。BTC如果反彈,上方重要阻力位區間在6600-6700美元,最終突破7000美元出現看漲信號。[2018/6/13]

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

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

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

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

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

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

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

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

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

在閃電貸攻擊事件中,攻擊者往往通過惡意合約實現可重入攻擊。如 2022 年 3 月 16 日,黑客通過閃電貸借款,利用借貸項目 Hundred Finance 的漏洞實時重入攻擊,最終獲利約 2363 ETH。具體流程并不復雜,由于 Hundred Finance 是先轉賬后記賬,黑客通過閃電貸借款,利用攻擊合約存入 Hundred Finance 借款池實現抵押貸款,而攻擊合約部署的 onTokenTransfer 函數在記賬之前實現重復調用借款函數(重入攻擊),以一筆抵押資產不斷從不同借款池提取借款,由于是先轉賬后記賬,當記賬時(流程結束)黑客已經實現了攻擊并獲利。攻擊的核心是:流程未結束之前,攻擊者合約可以反復調用相關函數實現資產盜取。

就好比說,攻擊者合約將資產抵押給 A 銀行(項目 A 借款池 ) 進行貸款,銀行 A 在未完成記賬結算之前就開始放款,而銀行 A 完成記賬結算流程意味著閃電貸交易要成功(原子性),這時候資產被 A 入庫記賬。但由于銀行 A 和其他銀行之間的信息不同步(合約函數之間的狀態不同步),攻擊者在 A 銀行還未完成資產入庫記賬時(即被攻擊合約貸款流程未結束時,這時候閃電貸工作流程還未結束,合約函數調用還可以進行),再次以該資產在 B、C 等其他銀行進行抵押貸款(重入),待流程結束,攻擊者已經完成閃電貸攻擊并獲利。

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

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

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

我們在前一篇報告中已經分析過,賬戶資產和收據(receipt)都是一種資源類型,「不能復制、丟棄或重用,可以被安全地存儲和轉移」,因此收據(receipt)必須被處理(且只能使用一次),而非像以太坊那樣的對賬戶進行數值賦予處理就行。因此燙手山芋模式可以確保被借出的資產(資源類型,一旦借出就真實發生轉移了)必須被歸還。收據(receipt)作為燙手山芋,就好比是定時一個引爆器(這里的定時,是閃電貸套利作為一個原子交易的「時間」,并非具體的時長),資金和引爆器一起綁定被借出,而任何一方都無法收留引爆器,它必須被還回原處得以拆除——否則交易都無法完成,因此閃電貸資金可以確保會被歸還。

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

吉時通信

個人專欄

閱讀更多

金色財經

金色財經 子木

金色早8點

去中心化金融社區

虎嗅科技

區塊律動BlockBeats

CertiK中文社區

深潮TechFlow

念青

Odaily星球日報

Tags:MOV以太坊MOVESOLmovez幣是哪個國家發行的以太坊交易所叫什么名字move幣能長起來嗎SOLX

MANA
元宇宙:“白刃”元宇宙:Meta向左 蘋果向右

對蘋果來說,2022年或許是平淡的一年。iPhone14系列稱不上驚喜,供應鏈也頻頻出問題。而明年的蘋果,可能要迎來一個重磅產品——混合現實頭顯。這也是被外界看作元宇宙入口的產品.

1900/1/1 0:00:00
ASH:展望 2023 年:穩定幣、DEX交易、以太坊和區塊鏈基礎設施

在基礎設施層,我們預計 2023 年將成為以太坊擴展最重要的年份之一。 最近的暴雷事件推動人們轉向“優質”L1項目,尤其是大多數客戶、流動性和基礎設施所依附的以太坊,明年我們將把重點放在現有項目.

1900/1/1 0:00:00
CEX:CEX 雷曼時刻的 B 面:一場專屬于 DEX 的鏈上狂歡

撰文:Frank,Foresight News2020 年加密衍生品交易巨頭 BitMEX 式微后,FTX 等 CEX 接棒衍生品交易,或許也正因如此,在 FTX 此輪崩潰過程中.

1900/1/1 0:00:00
UNI:Uniswap V3 LP扭虧為盈的轉機

編者按:本文來自blockin.ai原文標題《UniV3的LP在持續虧損中苦苦掙扎,CeFi到DeFi的遷移是否會成為LP扭虧為盈的救命稻草?》Odaily星球日報經授權轉載發布.

1900/1/1 0:00:00
NFT:Web3 如何走向主流:除時間外 這 3 個關鍵領域值得關注

撰文:Zeneca_33我剛從拉斯維加斯的 W3BX 博覽會上呆了一周回來。此次參會,我參加了 11 個小組討論。我遇到了數百人,包括幾十個對 Web3 和 NFT 世界完全陌生的人.

1900/1/1 0:00:00
區塊鏈:研究員:2017 到 2022 加密行業的資本配置格局發生了什么變化?

作者:@dantwany,The Block上周加密世界的事(指 FTX 倒塌)讓我開始自我反省。在過去的 4 年里,我一直在跟蹤和分析加密行業的資本配置.

1900/1/1 0:00:00
ads