市值: $3.4612T -2.97%
體積(24小時): $176.5595B 0.89%
恐懼與貪婪指數:

26 - 害怕

  • 市值: $3.4612T -2.97%
  • 體積(24小時): $176.5595B 0.89%
  • 恐懼與貪婪指數:
  • 市值: $3.4612T -2.97%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

什麼是重入攻擊?智能合約如何防禦它?

Re-entrancy attacks exploit unchecked external calls in smart contracts, allowing attackers to recursively withdraw funds before state updates, as seen in the $60M DAO hack.

2025/11/13 03:40

了解智能合約中的重入攻擊

1. 當惡意合約在初始執行完成之前重複回調另一個合約的易受攻擊的函數時,就會發生重入攻擊。此漏洞利用了狀態更改和外部調用執行的順序。

2. 最臭名昭著的例子是 2016 年 DAO 黑客攻擊,攻擊者通過遞歸地從未能在發送以太幣之前更新余額的合約中提取資金,損失了超過 6000 萬美元。

3. 這些攻擊通常針對對不受信任的合約進行外部調用、同時將關鍵狀態變量保持在不一致狀態的函數。

4. 在遞歸調用過程中,攻擊者的後備或接收函數再次觸發相同的提款邏輯,有效繞過訪問控製或餘額檢查。

5. 核心漏洞在於違反了檢查-效果-交互模式,其中狀態修改應始終在外部調用之前進行,以防止執行期間的操縱。

Solidity 中常見的脆弱模式

1. 在不首先更新內部會計的情況下將以太幣或代幣發送到用戶控制的地址的功能是重入的主要目標。

2. 使用低級調用(例如使用本機以太幣傳輸進行調用)的合約尤其面臨風險,因為它們轉發所有剩餘的 Gas,從而實現複雜的回調邏輯。

3. 當調用本身觸發遞歸條目時,依賴調用後驗證的邏輯會失敗,從而使這些檢查在損壞完成之前無效。

4. 如果父合約沒有強制實施適當的保護,即使子合約看起來是​​安全的,繼承結構也可能會無意中暴露函數。

5. 如果委託調用機制允許通過共享存儲佈局進行狀態損壞,則庫或代理模式可能會傳播漏洞。

有效的防禦機制

1. 嚴格實現“檢查-效果-交互”模式:始終驗證輸入、更新狀態變量,然後繼續進行外部調用。

2. 使用已建立的庫(例如 OpenZeppelin 的 ReentrancyGuard)中的重入防護,它使用互斥鎖來阻止遞歸條目。

3. 優先選擇通過轉賬發送方式轉移資金,而不是調用,因為這些方法限制了gas轉發並減少了攻擊面。

4、採用拉拉式支付模式,由用戶領取資金,而不是自動調度,消除外呼風險。

5. 在開發過程中應用嚴格的靜態分析工具和形式驗證,以在部署之前檢測潛在的遞歸路徑。

常見問題解答

是什麼讓後備函數在重入場景中變得危險?當回退函數包含重新調用調用合約的業務函數的邏輯時,它就會變得危險。如果原始合約在進行外部調用之前尚未更新其狀態,則此遞歸觸發器可以利用過時的餘額或權限。

多個合約交互中是否可以發生重入?是的,當同一合約內的不同函數在沒有適當同步的情況下訪問共享狀態時,跨函數重入是可能的。攻擊者可能會觸發一個外部調用的函數,然後在狀態更新發生之前使用回退進入第二個易受攻擊的函數。

非以太坊合約是否不受重入影響?不,處理 ERC-20 傳輸的代幣合約也可以被利用。如果代幣傳輸觸發接收者掛鉤(如批准+回調),並且接收合約在傳輸中操縱發送者的狀態,則會出現類似的遞歸漏洞。

編譯器升級如何幫助減少重入?新版本的 Solidity 包括更安全的默認值和針對已知反模式的警告。例如,明確的可見性說明符和改進的汽油津貼規則減少了意外行為。然而,編譯器功能本身並不能消除需要架構規則的邏輯缺陷。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

加密的意圖是什麼以及它們如何改變用戶交互?

加密的意圖是什麼以及它們如何改變用戶交互?

2025-11-09 09:00:23

了解去中心化交易所在現代加密貨幣交易中的作用1. 去中心化交易所(通常稱為 DEX)通過消除中介機構重塑了交易者與數字資產的互動方式。這些平台在區塊鍊網絡上運行,允許用戶直接從錢包進行交易,而無需將資金存入中心化實體。 2. 智能合約為大多數 DEX 操作提供支持,在滿足預定義條件時自動執行交易。這...

什麼是重新抵押以及它如何增強經濟安全?

什麼是重新抵押以及它如何增強經濟安全?

2025-11-09 23:40:08

了解區塊鏈生態系統中的重質押1. 重新抵押是指已經將其代幣抵押在權益證明 (PoS) 網絡中的用戶可以將這些抵押資產重新用作區塊鏈生態系統內多個協議或層的抵押品的過程。這種機制允許驗證者和委託者將其安全貢獻擴展到單個鍊或應用程序之外。 2. 重新質押使參與者能夠利用其現有權益,而不是為每個需要經濟安...

什麼是主權匯總以及它與智能合約匯總有何不同?

什麼是主權匯總以及它與智能合約匯總有何不同?

2025-11-10 09:00:05

了解主權匯總1. 主權匯總作為獨立的區塊鏈層運行,利用基礎層(例如以太坊)的數據可用性,而不依賴它進行交易驗證。它不是向智能合約提交證明,而是將原始交易數據直接發佈到基礎鏈上。 2. 該模型允許 Rollup 保持對其執行環境和共識機制的完全控制。網絡參與者根據設計使用欺詐或有效性證明獨立驗證交易。...

什麼是加密經濟系統?它如何利用激勵措施來保護網絡?

什麼是加密經濟系統?它如何利用激勵措施來保護網絡?

2025-11-11 01:20:28

了解加密經濟系統1. 加密經濟系統是指密碼學、分佈式系統和經濟激勵的集成,以維持區塊鍊網絡的完整性和功能性。該框架使參與者之間能夠進行不信任的交互,而無需依賴中心化機構。該設計通過精心設計的獎勵和懲罰確保參與者的行為方式支持網絡穩定性。 2. 密碼學可以保護數據傳輸並驗證所有權,而工作量證明或權益證...

什麼是區塊鏈的吞吐量以及如何測量它?

什麼是區塊鏈的吞吐量以及如何測量它?

2025-11-12 04:00:12

了解區塊鏈吞吐量1. 區塊鏈吞吐量是指區塊鍊網絡在特定時間範圍內可以處理的交易數量,通常以每秒測量。該指標對於評估去中心化系統的可擴展性和效率至關重要。高吞吐量使網絡能夠支持更廣泛的應用,特別是在去中心化金融(DeFi)和不可替代代幣(NFT)等領域,快速交易結算至關重要。 2. 吞吐量的衡量受到區...

簡單支付驗證(SPV)節點和全節點有什麼區別?

簡單支付驗證(SPV)節點和全節點有什麼區別?

2025-11-12 09:40:18

了解全節點在區塊鏈生態系統中的作用1. 全節點根據共識規則下載並驗證區塊鏈中的每個區塊和交易,確保完全遵守網絡協議。這些節點存儲整個區塊鏈歷史記錄,這需要大量存儲空間——目前 Bitcoin 超過 400GB,並且隨著每個新塊的增加而增長。全節點獨立驗證交易,不依賴第三方,增強了整個網絡的安全性和去...

加密的意圖是什麼以及它們如何改變用戶交互?

加密的意圖是什麼以及它們如何改變用戶交互?

2025-11-09 09:00:23

了解去中心化交易所在現代加密貨幣交易中的作用1. 去中心化交易所(通常稱為 DEX)通過消除中介機構重塑了交易者與數字資產的互動方式。這些平台在區塊鍊網絡上運行,允許用戶直接從錢包進行交易,而無需將資金存入中心化實體。 2. 智能合約為大多數 DEX 操作提供支持,在滿足預定義條件時自動執行交易。這...

什麼是重新抵押以及它如何增強經濟安全?

什麼是重新抵押以及它如何增強經濟安全?

2025-11-09 23:40:08

了解區塊鏈生態系統中的重質押1. 重新抵押是指已經將其代幣抵押在權益證明 (PoS) 網絡中的用戶可以將這些抵押資產重新用作區塊鏈生態系統內多個協議或層的抵押品的過程。這種機制允許驗證者和委託者將其安全貢獻擴展到單個鍊或應用程序之外。 2. 重新質押使參與者能夠利用其現有權益,而不是為每個需要經濟安...

什麼是主權匯總以及它與智能合約匯總有何不同?

什麼是主權匯總以及它與智能合約匯總有何不同?

2025-11-10 09:00:05

了解主權匯總1. 主權匯總作為獨立的區塊鏈層運行,利用基礎層(例如以太坊)的數據可用性,而不依賴它進行交易驗證。它不是向智能合約提交證明,而是將原始交易數據直接發佈到基礎鏈上。 2. 該模型允許 Rollup 保持對其執行環境和共識機制的完全控制。網絡參與者根據設計使用欺詐或有效性證明獨立驗證交易。...

什麼是加密經濟系統?它如何利用激勵措施來保護網絡?

什麼是加密經濟系統?它如何利用激勵措施來保護網絡?

2025-11-11 01:20:28

了解加密經濟系統1. 加密經濟系統是指密碼學、分佈式系統和經濟激勵的集成,以維持區塊鍊網絡的完整性和功能性。該框架使參與者之間能夠進行不信任的交互,而無需依賴中心化機構。該設計通過精心設計的獎勵和懲罰確保參與者的行為方式支持網絡穩定性。 2. 密碼學可以保護數據傳輸並驗證所有權,而工作量證明或權益證...

什麼是區塊鏈的吞吐量以及如何測量它?

什麼是區塊鏈的吞吐量以及如何測量它?

2025-11-12 04:00:12

了解區塊鏈吞吐量1. 區塊鏈吞吐量是指區塊鍊網絡在特定時間範圍內可以處理的交易數量,通常以每秒測量。該指標對於評估去中心化系統的可擴展性和效率至關重要。高吞吐量使網絡能夠支持更廣泛的應用,特別是在去中心化金融(DeFi)和不可替代代幣(NFT)等領域,快速交易結算至關重要。 2. 吞吐量的衡量受到區...

簡單支付驗證(SPV)節點和全節點有什麼區別?

簡單支付驗證(SPV)節點和全節點有什麼區別?

2025-11-12 09:40:18

了解全節點在區塊鏈生態系統中的作用1. 全節點根據共識規則下載並驗證區塊鏈中的每個區塊和交易,確保完全遵守網絡協議。這些節點存儲整個區塊鏈歷史記錄,這需要大量存儲空間——目前 Bitcoin 超過 400GB,並且隨著每個新塊的增加而增長。全節點獨立驗證交易,不依賴第三方,增強了整個網絡的安全性和去...

看所有文章

User not found or password invalid

Your input is correct