比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > PEPE幣 > Info

詳解DeFi協議智能合約漏洞:4大分類與38種情況_ETH

Author:

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

作者:WeBlockCTOAbbaGarba

翻譯:HAO

區塊鏈是一種新型的分布式系統體系,它使用P2P對等網絡通信,區塊存儲,分布式算法共識和加密算法來防止篡改。

從本質上講,區塊鏈可以看作是由所有網絡節點共同維護的分布式數據庫。與傳統的分布式數據庫相比,區塊鏈由于具有完整的數據備份,開放透明的網絡,無法篡改,完整的信息可追溯性和弱信任模型,因此更適合對分散式信任有明確要求的應用場景。

特別是典型的區塊鏈應用場景包括數字支付,產品可追溯性,版權保護,供應鏈財務等。在區塊鏈系統中,智能合約在實施分散式應用部署和擴展應用的功能方面發揮著極其重要的作用。

區塊鏈系統與傳統應用程序相比,在區塊鏈系統架構上運行的智能合約具有開放性和透明性,執行性,不可篡改且不依賴第三方的特點,可以滿足各種去中心化應用場景的需求,包括近年來發展迅速的去中心化金融項目。

截至2021年1月15日,去中心化金融以超過45億美元的資本成為了成功的金融范例,它利用基于區塊鏈的智能合約來確保其完整性和安全性。

去中心化金融是一個新的發展領域,用于交換,借出或借用令牌。通常,這些指令由智能合約調節和/或由多方,分散式治理機制控制的``收益''或收入流。去中心化金融—在現有區塊鏈平臺之上逐漸興起。

這個新領域的組成部分包括那些與貸款,資產交易和衍生品市場有關的部分。作為去中心化的應用,智能合約管理著大量的數字資產,從而也使其容易受到各種攻擊。

本文將從三個維度具體闡述了智能合約安全性問題:首先,由于以太坊體系結構每一層的漏洞導致的智能合約安全性。其次,也會探討DeFi和智能合約近期出現的各種攻擊。

最后還將探討現有的可行性工具以及來其他的有效實踐如何最大限度地減少此類攻擊。

以太坊架構不同層的智能合約漏洞

以太坊架構概述

在探討智能合約漏洞之前,我們先簡單概述下有關以太坊智能合約架構。

區塊鏈網絡能部署并自動執行編程腳本任務。這些程序稱為智能合約,用于定義在交易期間調用的自定義功能和規則。基于智能合約的區塊鏈技術已被應用到各種行業中,例如金融,供應鏈管理,醫療保健能源和政府服務。

德克薩斯州參議院通過法案限制比特幣礦工參與需求響應計劃:金色財經報道,美國德克薩斯州參議院通過了一項法案,該法案將限制比特幣礦工可以參與需求響應計劃的數量,根據該計劃,他們在能源需求高時減少運營而獲得報酬。法案SB1751僅以一票反對通過了參議院,現在正前往眾議院。如果獲得批準,它必須由德克薩斯州州長簽署成為法律。

該法案旨在將參與需求響應計劃的比特幣礦工限制在10%,并取消對該行業的稅收減免。預計眾議院的投票將更具爭議性,部分原因是比特幣礦工加大了反對該法案的力度。包括德州區塊鏈委員會、數字商會和中本聰行動基金在內的三個游說團體周一發起了反對該法案的運動,他們稱該法案“反競爭”。[2023/4/13 14:00:21]

只有特定的區塊鏈平臺支持智能合約:以太坊是第一個支持智能合約的。其他區塊鏈平臺兼容于部署和執行智能合約。

一種稱為Solidity的腳本類型語言用于在以太坊平臺中開發智能合約。在這一部分中,我們介紹了以太坊平臺上智能合約實施的相關安全漏洞。智能合約可以持有和管理相應的功能Credit{可能價值數千美元的大量虛擬貨幣。

因此,對手不斷嘗試操縱智能合約的執行以支持其活動。本質上,智能合約在分布式和無權限網絡上運行,該網絡繼承了許多漏洞。在傳統的系統中,可以重新開發或修補這一小部分的中心化應用程序。

相反,在去中心化的區塊鏈網絡中,除非采取極端措施,否則無法在實時網絡中修改或升級已部署的智能合約。智能合約的一成不變特征是其安全方面的優勢也是劣勢。由于這種不變性,黑客無法為自己的利益進行更改或修改合約。

但是,部署后開發人員也無法修改智能合約應用程序。他們可以取消或終止合約并創建新的智能合約,然后再次部署它。因此,出于安全性考慮,在部署智能合約之前,應對智能合約進行大范圍的測試。我們重點介紹了以太坊智能合約架構的基本構建模塊,如圖1所示,其中包括以太坊的架構。

圖1:?用于運行以太坊區塊鏈的環境是通過一個Web用戶界面與以太坊體系結構服務的四層進行交互,應用層,用于存儲區塊鏈數據的數據庫,用于支持共識協議的加密機制以及用于網絡層的Internet服務。

a.應用層:以太坊客戶端在EVM中執行智能合約,其中智能合約與以太坊賬戶相關聯。以太坊支持兩種類型的賬戶:外部擁有賬戶和合約賬戶。EOA用于將用戶資金存放在Wei中,Wei是Ether的最小子面額,價值10-18Ether。

數據倉庫平臺Space and Time加入Nvidia創業計劃:金色財經報道,數據倉庫平臺Space and Time加入了芯片制造商Nvidia的初創企業計劃,此前它在微軟的風險投資部門M12的支持下籌集了2000萬美元的戰略融資。Nvidia Inception幫助處于人工智能、醫療保健和智能城市等領域技術發展前沿的初創公司加速產品的采用,并讓他們有機會與行業領先的專家和AI驅動的組織合作。

Space and Time旨在將鏈上和鏈下的數據結合到一個單一的平臺,使企業能夠進行企業規模的分析并進行快速交易。(the block)[2022/11/11 12:47:09]

EOA與公鑰相關聯并由公鑰解決;通過顯示相應私鑰的所有權來驗證對EOA的訪問。相反,合約帳戶與一段可執行的字節碼相關聯,它定義了一些令人感興趣的業務邏輯。智能合約是DApp的基石。

DApp通常將用戶界面作為其前端,并將一些智能合約作為其后端。一些DApp會發行自己的稱為令牌的加密貨幣,用于初始代幣發行和交易所。基于以太坊的令牌是一種特殊的智能合約。

智能合約在EVM中執行,這些EVM是使用基于堆棧的體系結構的準圖靈完整機器。術語“quasi”是指執行受交易提供的gas限制。在以太坊應用層中,發生各種漏洞,導致許多攻擊,如應用層中的圖所示。

b.數據層:包含區塊鏈數據結構。交易是EOA與另一個EOA或合約帳戶之間的交互。交易由以下方式指定:

nonce,它是用于跟蹤發送方已發起的交易總數的計數器;

收件人,該收件人指定了交易的目標EOA或合約帳戶;

價值,即從發件人向收款人轉移的金額;

輸入,是與交易目的相對應的字節碼或數據;

gasPrice和gasLimit,分別指定發送方愿意向包含交易的區塊的獲勝礦工支付的單價和最大天然氣量;

,它是發送者的橢圓曲線數字簽名算法簽名。執行交易會更新所涉及帳戶的狀態,從而更新區塊鏈。

c.共識層:確保區塊鏈的狀態一致。在撰寫本文時,以太坊大約需要12-14秒來創建一個區塊,這意味著多個礦工可以同時創建有效的區塊,并且可能有許多區塊。

以太坊使用GHOST共識協議的變體來選擇“最重”分支作為主鏈,其中“heaviest”分支是根植于所討論的分叉的子樹,并且具有最高的累積區塊難度,同時注意到陳舊區塊不在主鏈上。但注意,以太坊用權益證明替代其當前使用的工作量證明。

Blast現已添加對APTOS網絡支持:11月3日,據官方公告,Bware Labs API基礎設施平臺Blast現已添加對APTOS網絡支持,支持通過Blast與 APTOS進行交互。[2022/11/3 12:12:32]

d.網絡層:管理節點或客戶端的以太坊點對點網絡,以使節點始終可以從某些活動節點獲取區塊鏈的更新狀態。

以太坊網絡是一個結構化的P2P網絡,其中每個節點存儲整個區塊鏈的副本。為了進行節點發現和路由,每個節點維護一個動態路由表,其中包含160個存儲桶,每個存儲桶最多包含16個其他節點的ID,IP地址,UDP/TCP端口條目。

以太坊使用RLPx協議發現目標客戶端,并使用以太坊有線協議來促進客戶端之間以太坊區塊鏈信息的交換。

e.以太坊區塊鏈環境:運行在如下四層的環境中:用戶與以太坊區塊鏈進行交互的Web界面;以太坊客戶的數據庫,用于存儲區塊鏈數據;出于安全目的的加密機制;以及支持以太坊節點之間的區塊鏈通信的互聯網基礎設施。

我們將以太坊區塊鏈架構與環境區分開來,因為針對以太坊區塊鏈的攻擊可能來自環境,并且這些攻擊可能在環境中得到更好的解決,而不是由以太坊解決。

1.以太坊智能合約漏洞

重點介紹了以太坊體系每一層的智能合約漏洞,如圖2所示。

圖2:以太坊各層漏洞的分類

以太坊應用層:

重入性:此漏洞最初是從DAO攻擊中發現的,當外部被調用方合約在

用方合約完成之前在調用方合約中回調函數時,會發生此漏洞。這使攻擊者可以繞開適當的有效性檢查,直到調用者合約被耗盡以太幣或交易用完為止。

委托呼叫注入:首先從對Parity錢包的攻擊中發現了此漏洞。為了促使代碼重用,EVM提供了一個操作碼委托調用,用于將被調用方合約的字節碼插入到調用方合約的字節碼中。

結果惡意的被調用方合約可以直接修改調用方合約的狀態變量。此漏洞是由于被調用方合約可以更新調用方合約的狀態變量而導致的。聲明旨在通過委托調用作為庫共享的無狀態合約,可完全防此漏洞。

凍結以太:首次從對Parity錢包的攻擊中發現了此漏洞。該漏洞產生

跨鏈聚合器Bungee推出Refuel功能,支持以太坊及Layer2跨鏈時發送小額以太坊:9月24日消息,由跨鏈基礎設施Socket支持的跨鏈聚合器Bungee推出Refuel功能,用戶在以太坊和Layer2以及兩個Layer2網絡間進行跨鏈時,可以發送小額以太坊作為目標鏈上的Gas費用。[2022/9/24 7:18:22]

由于用戶無法將錢存入其合約帳戶,而無法從這些帳戶中支出資金,從而有效凍結了他們的資金。

升級合約:引入合約升級的思想是為了緩解智能合約一旦部署后就無法修改的問題,即使以后發現它們存在漏洞。為了允許合約升級,有兩種方法:將合約分為代理合約和邏輯合約,以使開發人員可以升級后者而不是前者;使用注冊管理機構合約來保存更新后的合約。這些方法雖然有效,但卻引入了一個新的漏洞:當合約開發者變得惡意時,更新的合約可能是惡意的。此漏洞仍然是一個未解決的問題。

具有意外還原的DoS:發生這種情況的原因是,由于主叫方合約遇到外部呼叫失敗而導致事務被還原,或者被叫方合約故意執行還原操作以中斷主叫方合約的執行。此漏洞是由執行被調用方合約還原的調用方合約引起的。通過使接收者調用交易來“提取”發件人為接收者預留的資金,可以防止此漏洞,從而有效地防止了發件人的交易被還原。

整數上溢和下溢:首次從針對BEC令牌的攻擊中發現了此漏洞。當運算的結果超出了Solidity數據類型的范圍時,就會發生這種情況,例如導致對攻擊者的余額或其他狀態變量進行未經授權的操縱。該漏洞是由Solidity源代碼未在數字輸入上執行正確的驗證引起的,并且Solidity編譯器和EVM均未提供整數上溢/下溢檢測。可以通過使用SafeMath庫來防止此漏洞處理這些問題。

操縱余額:當合約的控制流決策依賴于此值時,會發生此漏洞。平衡或解決平衡,攻擊者可以利用它使自己成為唯一可以獲取金錢的人。可以通過不使用任何條件聲明中的合約余額來防止此漏洞。

通過tx.origin進行身份驗證:tx.origin是Solidity中的全局變量,它指的是發起有問題交易的原始EOA。當合約使用tx.origin進行授權時會發生此漏洞,這可能會受到網絡釣魚攻擊的危害。通過使用msg.sender而不是tx.origin進行身份驗證,可以防止此漏洞,因為msg.sender返回導致該消息的帳戶。

Oasis:ValleySwap與EvoDeFi bridge是未獲官方支持的第三方項目,已多次提示風險:金色財經消息,Oasis針對ValleySwap中的USDT脫錨情況發布聲明,稱ValleySwap與EvoDeFi bridge都是第三方的項目,沒有獲得Oasis的支持。同時出現脫錨的穩定幣并非Oasis的原生資產,幾個月來Oasis多次對社區警告風險,Oasis官方推薦使用Wormhole、cBridge或Multichain。???此前報道,Oasis Network上Valley Swap中的USDT已嚴重脫錨。[2022/6/8 4:11:06]

錯誤的可見性:錯誤地指定功能的可見性,從而允許未經授權的訪問。

無保護的自殺:合約的所有者可以使用自殺或自毀方法銷毀合約。取消合約時,將刪除其關聯的字節碼和存儲。該漏洞是由合約強制執行的身份驗證不足引起的。可以通過強制執行例如多因素身份驗證來緩解此漏洞,這意味著自殺操作必須得到多方的批準。

將以太幣泄漏到任意地址:當任意調用方都可以提取合約的資金時,該漏洞就不會發生,該調用方既不是合約的所有者,也不是向合約存入資金的投資者。

此漏洞是由調用者調用將以太幣發送到任意地址的功能時無法檢查呼叫者的身份引起的。通過對發送資金的功能進行適當的身份驗證,可以防止此漏洞。

機密性失效:在區塊鏈中,由于區塊鏈的公共性質,限制變量或函數的可見性并不能確保變量或函數是機密的。防止此漏洞的一種可能解決方案是使用加密技術,例如定時承諾。

簽名信息不足:當數字簽名對多個交易有效時,就會發生此漏洞,當一個發件人通過代理合約向多個收件人匯款時,可能會發生此漏洞。此漏洞最初是在針對智能合約的重播攻擊中利用的。通過在每條消息中合并適當的信息可以防止此漏洞。

具有不受限制的操作的DoS:此漏洞首先從GovernMental合約中觀察到。

未經檢查的呼叫返回值:此漏洞也稱為處理錯誤的異常。它有兩個變體,稱為gas-less發送和unchecked發送。當不檢查低級調用的返回值時會出現這種情況,即使函數調用拋出錯誤,執行也可能會繼續。

未初始化的存儲指針:回顧下,在Solidity中,合約狀態變量始終從插槽0開始連續放置在存儲中。對于復合局部變量,將引用分配給未占用的對象存儲中的插槽以指向狀態變量。

錯誤的構造函數名稱:此漏洞最初是從Rubixi合約中觀察到的,該構造函數的名稱不正確,它使任何人都可以成為合約的所有者。在Solidity0.4.22版之前,聲明與合約名稱相同的函數被視為合約構造函數,該函數僅在創建合約時執行。

類型轉換:此漏洞最早在中發現。以Solidity語言編寫的合約可以通過直接引用被調用方合約的實例來調用另一個合約。

過時的編譯器版本:當合約使用過時的編譯器時會發生,其中包含錯誤,因此使已編譯的合約易受攻擊。通過使用最新的編譯器可以防止此漏洞。

簡短地址:此漏洞最早在中實現,并進行了廣泛討論。

以太幣丟失給孤立地址:以太幣失去到孤立發生在匯款時,以太坊僅檢查接收者地址的長度不超過160位,而不檢查接收者地址的有效性。如果將錢發送到一個不存在的孤立地址,則以太坊會自動注冊該地址,而不是終止交易。

由于該地址未與任何EOA或合約帳戶相關聯,因此沒有人可以提取已轉移的資金,這實際上是丟失的。此漏洞是由EVM不能孤立保護引起的。在撰寫本文時,只能通過手動確保收件人地址的正確性來防止此漏洞。

調用堆棧深度限制:此漏洞是由EVM的執行模型不足引起的,并且已被EIP-150的硬分叉所消除,該硬叉重新定義了外部調用的耗油量規則,使其不可能達到1,024in調用堆棧深度。

低估操作碼:首先從兩次DoS攻擊中發現了此漏洞。

交易順序依賴:這是指并發性問題,即區塊鏈的即將到來的狀態取決于交易的執行順序,但是由礦工決定。

時間依賴關系:當合約在執行關鍵操作時將block.timestamp用作觸發條件的一部分或作為可由惡意礦工操縱的隨機性來源時,會發生此漏洞。該漏洞是由以太坊引起的,它只要求時間戳大于其母塊的時間戳并且在當前時鐘的900秒以內。

產生隨機性:例如,許多賭博和彩票合約都是隨機選擇中獎者,通常的做法是根據一些初始私有種子生成偽隨機數。但是,這些種子由礦工完全控制,這意味著惡意礦工可以操縱這些變量使自己成為贏家。此漏洞是由可操縱的entropy源引起的。

2.數據層漏洞

難以分辨的鏈:當以太坊分為ETH和ETC兩條鏈時,首先從跨鏈重放攻擊中觀察到此漏洞。回想一下,以太坊使用ECDSA簽署交易。在進行EIP-155硬分叉之前,每筆交易都包含六個字段。

但是,數字簽名不是特定于鏈的,因為那時甚至還不知道特定于鏈的信息。結果,為一個鏈創建的事務可被另一鏈重用。通過將chainID合并到字段中,已消除了此漏洞。

StateTrie中的“空帳戶”:此漏洞首先從參考文獻中報告的DoS攻擊中發現的。

3.共識層的漏洞

可外包的難題:回想以太坊采用了名為Ethash的PoW難題,該難題旨在抵御ASIC,并能夠限制并行計算的使用。但是,狡猾的礦工仍然可以將搜索難題解決方案的任務劃分為多個較小的任務,然后將其外包。該漏洞是由Ethash造成的,它僅使拼圖解決方案在原圖像搜索中部分順序,而不是依賴順序PoW。

概率最終性:此漏洞是由以太坊區塊鏈偏愛可用性而非一致性的設計引起的,這是根據CAP定理選擇的。

帶有塊填充的DoS:首次從Fomo3D合約中觀察到此漏洞。該漏洞僅導致攻擊者的交易包含在新開采的區塊中,而其他交易則被礦工放棄一段時間。當攻擊者提供更高的gasPrice以激勵礦工選擇攻擊者的交易時,可能會發生這種情況。此漏洞是由貪婪的采礦激勵機制引起的。在撰寫本文時,尚無解決方案來防止此漏洞。

誠實的采礦設想:此漏洞是由共識協議引起的,因為它與激勵不兼容,請參見。在撰寫本文時,此漏洞仍然是一個未解決的問題。

出塊獎勵:它是指出塊獎勵機制,用于應對由于快速生成塊而導致的陳舊區塊增加。但是,這種機制有一個副作用,即允許自私的礦工將陳舊的區塊變成出塊并獲得獎勵,從而有效地激勵了自私的采礦和雙重支出。

驗證者的困境:此漏洞最早在參考文獻中報道,指的是當驗證新交易需要不費吹灰之力的計算時,無論礦工是否選擇驗證交易,都將受到攻擊。如果礦工驗證了計算量大的交易,那么他們將花費大量時間,并在下一個區塊的競爭中為攻擊者提供優勢;如果礦工未經驗證接受交易,則區塊鏈可能包含不正確的交易。此漏洞是由以太坊中驗證資源需求交易的高昂成本引起的。可以通過限制驗證塊中所有事務所需的計算量來緩解此漏洞。但是,尚不清楚如何消除此漏洞。

4.網絡層的漏洞

無限節點的創建:此漏洞是針對Geth客戶端1.8之前的版本。在以太坊網絡中,每個節點都由唯一的ID標識,該ID是64字節的ECDSA公鑰。攻擊者可以在一臺計算機上創建無限數量的節點,然后使用這些節點壟斷某些受害者節點的傳入和傳出連接,從而有效地將受害者與網絡中的其他對等節點隔離開來。

此漏洞是由對節點生成過程的弱限制引起的。通過使用IP地址和公鑰的組合作為節點ID,可以消除此漏洞。格斯開發人員尚未采用這種對策,他們認為這對客戶端的可用性有負面影響。

不受限制的傳入連接:此漏洞在版本1.8之前的Geth客戶端中。每個節點在任何時間點可以具有總數為maxpeers的連接,并且可以與其他節點發起多達1/2?個出站TCP連接。

但是,其他節點啟動的傳入TCP連接的數量沒有上限。通過為maxpeers建立與沒有出站連接的受害節點的許多傳入連接,攻擊者有機會使受害者黯然失色。在Gethv1.8中,通過對到節點的傳入TCP連接的數量實施上限,默認值為?maxpeers/3?=8,消除了此漏洞。

公共對等體選擇:在Geth客戶端1.8之前的版本中檢測到此漏洞。

對等體選擇:該漏洞指的是Geth客戶端在從其路由表中選擇節點以建立出站連接時,總是獲取隨機選擇的桶的頭部。由于每個存儲桶中的節點都是按活動排序的,因此攻擊者可以通過定期向Geth客戶端發送消息來使其節點始終位于其他節點之前。

通過在路由表中所有節點的集合中隨機選擇統一的節點,而不是僅從每個存儲桶的頭中隨機選擇節點,在Gethv1.9中已消除了此漏洞。

獨立塊同步:它允許攻擊者對以太坊P2P網絡進行分區,而不會壟斷受害者客戶端的連接。回想一下,每個塊標題都包含一個難度字段,該字段記錄了該塊的挖掘難度。區塊鏈的總難度用totalDifficulty表示,是直到當前區塊的難度之和。?

RPCAPI暴露:此漏洞最初是通過對Geth和Parity客戶端的攻擊發現的。

Tags:以太坊區塊鏈ETHDIT波場幣在以太坊發布區塊鏈的幾個大騙局有哪些SETH價格DeCredit

PEPE幣
BT快訊:幣圈首創用戶自治管理會議圓滿成功._DAO

當時間跨越到2021年,BT社區共識的大熱潮,還在肉眼可見地不斷升溫。時至今日,裹挾共識的BT已經有了更成熟的社區環境和更強大的資本實力.

1900/1/1 0:00:00
  2021年3月8日午間比特幣行情分析與操作策略_ACI

  2021年3月8日午間比特幣行情分析與操作策略  選擇是一種最大的智慧,人不論想干什么行業,選擇是第一重要的,這需要強大的智慧,投資人的選擇更是重中之重.

1900/1/1 0:00:00
一篇文章帶您了解JOKER.ONE項目_DIGI

從農業時代到工業時代的歷史長河無法停止,正如從中心化到去中心化的腳步無法阻擋JOKER.ONE重新定義鑄幣屬性,重新定義dapp生態.

1900/1/1 0:00:00
U世界UIC智能合約兌換算力讓我們一起改變世界_DEF

 2021年初始,最新資訊VX:756169比特幣就一路飆升,截至目前,比特幣價格已突破4W。很多人感嘆上車都來不及。如果比特幣上車來不及,我們可以再來了解了解DeFi,這個潛力股.

1900/1/1 0:00:00
幣牛理財: 行情上方引線形成 趨勢空頭降臨_FTT

BTC行情看點及解析如下:昨日有看過筆者文章朋友們空單是勝利了1000點空間展望;那么經過今日BTC早間一波拉伸沖高制高點51838附近位置止步,受到前期52000阻力下滑.

1900/1/1 0:00:00
龍赫論幣:3.7BTC晚間行情分析及操作建議_BDC

BTC:? 晚間行情分析: 比特幣在早間最低來到了49000附近,午間直線上升一路上漲,晚間最高來到了51141附近了,現比特幣已經在50500穩定下來,技術指標來看,四小時圖看.

1900/1/1 0:00:00
ads