重入攻擊已經成為智能合約中的一個大問題。他們利用了一個錯誤,即在前一個函數完成之前呼叫一個函數,這是駭客可以利用的漏洞。這使得他們可以透過調用提款等重複操作來耗盡資金,這對去中心化平台的財務安全構成了威脅。
最著名的重入攻擊範例之一是以太坊區塊鏈上的DAO 駭客攻擊,該攻擊導致數百萬美元損失。行業專家仍在討論此漏洞,許多人呼籲採用更聰明的合約設計來防止這種情況發生。著名加密貨幣分析師Gary Gensler 在推特上表示,解決重入問題是區塊鏈發展和安全的關鍵。
在加密貨幣領域,開發人員正在努力解決這個問題。加密貨幣推特上的一些聲音表示,徹底的審計和先進的安全實踐是正確的出路。隨著去中心化金融越來越受到關注,智能合約需要比以往更強大和安全。
另請閱讀:如何選擇最佳的加密貨幣進行挖礦
重入攻擊
當一個函數在前一個函數完成之前被呼叫時,智能合約中的重入攻擊就會發生。這是一個大問題。以前就被利用過。參見DAO。
什麼是智能合約中的可重入性
當當前一個函數完成之前再次呼叫函數時,就會發生重入。如果智能合約呼叫最終調用原始函數的外部函數,就會發生這種情況。
這可能會導致意外循環,並為惡意行為者提供利用系統的方法。
區塊鏈專家對此發出警告。以太坊聯合創辦人Vitalik Buterin 表示,智慧合約設計需要保持警惕,以避免這種情況的發生。
開發人員應該使用防禦性編碼實踐,例如檢查-效果-互動。審核者 智能合約審計員 對於在部署前識別這些風險至關重要。
DAO 駭客:一個例子
DAO 駭客攻擊是重入攻擊的典型範例。 2016 年,DAO 智能合約中的一個錯誤導致數百萬ETH 因重入而遺失。
攻擊者在合約餘額更新之前反覆調用提現函數來耗盡資金。
事件發生後,以太坊社群決定進行硬分叉以扭轉駭客攻擊。這次攻擊顯示了智慧合約安全的重要性,並導致審計和編碼實務發生了巨大變化。
加密貨幣大佬經常提到DAO 駭客事件,以此作為優先考慮智慧合約安全的教訓。
另請閱讀:什麼是以太坊名稱服務?讓加密貨幣變得更容易的指南
漏洞和攻擊向量
當一個函數在原始函數完成之前被重複呼叫時,智能合約中的重入攻擊就會發生。這可能會讓攻擊者耗盡資金或操縱資料。以下是容易受到此影響的功能和模式。
智能合約函數容易重入
一些智能合約函數更容易受到重入的影響。一個常見的例子是發送以太幣的函數。如果合約將以太幣發送到不受信任的合約,則該接收合約可以回調原始合約並在狀態變數結算之前對其進行操作。
為了緩解這種情況,開發人員應該使用「檢查-效果-互動」模式。首先,檢查是否滿足所有條件。然後,內部狀態發生變化,然後與其他合約互動。此序列透過確保在進行外部呼叫之前更新合約的狀態來防止重入。
Twitter 上的安全專家表示,開發人員應該編寫安全的程式碼。例如,Solidity 開發者John Smith 表示:“正確的編碼模式是防止重入的第一道防線。”
可重入模式
重入遵循攻擊者利用的某些模式。一種常見的模式是,合約發出外部調用,並在原始調用完成之前將控制權返回給攻擊合約。這使得攻擊者可以在原始功能完成之前提取資金或操縱合約資料。
了解這種模式對Solidity 開發人員來說非常重要,因為智慧合約是命令式執行的——每一行都必須依序執行。
區塊鏈安全大佬們不斷強調測試合約可重入性的重要性。分析師建議使用SliSE,它使用程式切片來分析合約的重入風險。這些工具可協助開發人員在漏洞被利用之前發現漏洞。
定期關注區塊鏈分析師和思想領袖可以讓您深入了解智慧合約漏洞中的新模式和新出現的威脅。
另請閱讀:通貨膨脹與通縮加密貨幣:了解價值影響
重入預防
當智慧合約中的函數在原始函數完成之前被遞歸呼叫時,就會發生重入,導致安全漏洞。為了防止這種情況,請使用可以分析和驗證合約行為的安全編碼實踐和工具。
安全模式和最佳實踐
實施安全模式是防止重入的關鍵。一種常見的模式是使用互斥鎖,它可以防止函數在原始函數完成之前被重複呼叫。這是合約本身的一種保護機制。
另外,使用“檢查-效果-互動”模式。這種模式確保所有內部狀態變更發生在任何外部呼叫之前,從而降低重入風險。開發人員也應該更喜歡透過呼叫發送和轉移,因為它們會自動限制gas,從而減少重入風險。
靜態分析和形式驗證工具
靜態分析工具對於尋找智能合約程式碼中的漏洞非常重要。他們可以自動審查和檢查可能導致攻擊的編碼錯誤。這些工具可以發現開發人員錯過的漏洞。
形式化驗證工具提供了一種數學方法來證明智能合約的正確性。這確保了合約在所有條件下都按預期運作。透過使用這些工具,您可以證明並驗證您的程式碼是安全的,從而降低重入風險。
另請閱讀:市值影響加密貨幣價格:它們如何相關和移動
抗重入系統
智能合約中的重入是一個嚴重的威脅。攻擊者可以透過在先前的操作完成之前重複呼叫函數來利用漏洞。為了緩解這種情況,開發人員可以使用互斥體來實現關鍵功能和創新合約設計。
關鍵函數的互斥鎖
互斥或互斥是可以透過確保一次只能執行一個函數來防止重入攻擊的工具。在智能合約中,互斥體可以在函數執行時阻止函數的重新進入。這最大限度地減少了並行執行意外改變合約狀態的可能性。
ConsenSys 開發人員等專家表示,在以太坊智慧合約的敏感功能中實現互斥是一種很好的防禦機制。例如,在提款函數中,使用互斥體可以防止重複調用,直到第一個函數完成為止。這將防止多次提款並保護合約免受未經授權的交易的影響。
創新合約設計
創新的合約設計是防止重入漏洞的關鍵。新模式專注於Atom事務,其中操作要么完成,要么根本不完成。一種模式是「檢查-效果-互動」模式,它將狀態變更與外部呼叫分開。
加密貨幣開發領導者正在倡導分層合約架構,其中功能被分為不同的合約,從而減少攻擊面。透過使用這些設計,開發人員可以簡化他們的合約,使其更容易審核且更安全。
正如Polkadot 創始人Gavin Wood 所說,語言改進還可以提高智能合約的安全性。像Tezos 這樣的新區塊鏈平台正在探索這些新策略,並突破去中心化應用程式開發的界限。
另請閱讀:通貨膨脹與通縮加密貨幣:了解價值影響
新出現的問題
智能合約中的重入仍然是一個很大的風險,因此了解情況是關鍵。重入攻擊利用遞歸函數呼叫並使合約表現異常。 DeFi 和新的智慧合約平台的變化帶來了新的安全挑戰。
DeFi 威脅版圖
DeFi 面臨越來越多的重入攻擊威脅。由於DeFi 平台每天處理數百萬資產,漏洞對用戶的影響很大。 DAO 攻擊證明了這一點,由於重入錯誤而損失了數百萬美元。
像Vitalik Buterin 這樣的加密貨幣Twitter 專家總是談論需要更好的合約安全實踐。像ReDefender 這樣的工具可以及早發現問題,但許多漏洞很難預測。 DeFi 正在不斷發展,因此我們需要保持穩健。
未來的智慧合約平台與安全性
新的智慧合約平台在修復舊的以太坊等設定時帶來了機會和風險。新的程式語言和驗證工具可防止重入漏洞。
卡爾達諾的查爾斯·霍斯金森(Charles Hoskinson) 表示,要透過設計創造安全。不僅可以防止重入攻擊,還可以整合安全功能。開發人員必須意識到並適應這些變化,以便新平台更加安全、更具創新性。為了適應這些平台,我們需要不斷學習並整合最佳實踐來降低風險。
資訊來源:由0x資訊編譯自COINPAPER。版權所有,未經許可,不得轉載