市值: $2.827T -4.84%
體積(24小時): $188.512B 68.83%
恐懼與貪婪指數:

28 - 害怕

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

選擇語言

選擇語言

選擇貨幣

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

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

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),我們將及時刪除。

相關知識

什麼是減半? (了解Bitcoin的供應計劃)

什麼是減半? (了解Bitcoin的供應計劃)

2026-01-16 00:19:50

什麼是 Bitcoin 減半? 1. Bitcoin 減半是嵌入在 Bitcoin 協議中的預編程事件,它將給予礦工的區塊獎勵減少 50%。 2. 大約每 210,000 個區塊發生一次,根據 Bitcoin 的平均出塊時間 10 分鐘,大約每四年發生一次。 3. 該機制由中本聰設計,旨在加強稀缺性...

什麼是玩賺錢 (P2E) 遊戲及其運作方式?

什麼是玩賺錢 (P2E) 遊戲及其運作方式?

2026-01-12 20:19:33

定義和核心機制1. Play-to-Earn (P2E) 遊戲是基於區塊鏈的數字體驗,玩家通過遊戲活動賺取加密貨幣代幣或不可替代代幣 (NFT)。 2. 這些遊戲依靠去中心化賬本技術來驗證所有權、轉移資產並在全球參與者網絡中透明地分配獎勵。 3. 與傳統視頻遊戲不同,P2E 遊戲將經濟系統直接嵌入其...

什麼是內存池以及交易如何得到確認?

什麼是內存池以及交易如何得到確認?

2026-01-24 06:00:16

什麼是內存池? 1.內存池是每個Bitcoin節點內的臨時存儲區域,用於保存未確認的交易。 2. 交易在廣播到網絡後但在礦工將其納入區塊之前進入內存池。 3. 每個完整節點都維護自己的內存池版本,由於延遲或策略變化,該版本可能略有不同。 4. 內存池的大小和組成會根據網絡擁塞、交易費用和區塊空間可用...

如何用加密貨幣賺取被動收入?

如何用加密貨幣賺取被動收入?

2026-01-13 07:39:45

質押機制1. 質押是指在錢包中鎖定一定數量的加密貨幣,以支持交易驗證和共識維護等網絡操作。 2. 參與者收到以他們所持有的相同代幣計價的獎勵,通常根據網絡定義的參數定期分配。 3. 以太坊向權益證明的過渡顯著增加了散戶通過 Lido 和 Rocket Pool 等平台的可及性。 4. 一些協議規定了...

什麼是零知識證明(ZK-Proofs)?

什麼是零知識證明(ZK-Proofs)?

2026-01-22 04:40:14

定義和核心概念1. 零知識證明(ZK-Proofs)是一種加密協議,使一方能夠向另一方證明陳述的真實性,而不會洩露超出該陳述有效性的任何潛在信息。 2. ZK-proof 必須滿足三個基本屬性:完整性、健全性和零知識——這意味著誠實的證明者可以說服誠實的驗證者,不誠實的證明者不能誤導驗證者,除非概率...

什麼是區塊鏈三難困境? (安全性、可擴展性和去中心化)

什麼是區塊鏈三難困境? (安全性、可擴展性和去中心化)

2026-01-15 17:00:25

了解核心衝突1. 區塊鏈三難困境描述了一個基本的架構約束,即在單個區塊鏈協議中同時最大化安全性、可擴展性和去中心化是極其困難的。 2. 每個重大設計決策都需要權衡——增加吞吐量通常需要減少節點數量或簡化共識邏輯,這會削弱去中心化或引入新的攻擊向量。 3. Bitcoin優先考慮安全性和去中心化,但將...

什麼是減半? (了解Bitcoin的供應計劃)

什麼是減半? (了解Bitcoin的供應計劃)

2026-01-16 00:19:50

什麼是 Bitcoin 減半? 1. Bitcoin 減半是嵌入在 Bitcoin 協議中的預編程事件,它將給予礦工的區塊獎勵減少 50%。 2. 大約每 210,000 個區塊發生一次,根據 Bitcoin 的平均出塊時間 10 分鐘,大約每四年發生一次。 3. 該機制由中本聰設計,旨在加強稀缺性...

什麼是玩賺錢 (P2E) 遊戲及其運作方式?

什麼是玩賺錢 (P2E) 遊戲及其運作方式?

2026-01-12 20:19:33

定義和核心機制1. Play-to-Earn (P2E) 遊戲是基於區塊鏈的數字體驗,玩家通過遊戲活動賺取加密貨幣代幣或不可替代代幣 (NFT)。 2. 這些遊戲依靠去中心化賬本技術來驗證所有權、轉移資產並在全球參與者網絡中透明地分配獎勵。 3. 與傳統視頻遊戲不同,P2E 遊戲將經濟系統直接嵌入其...

什麼是內存池以及交易如何得到確認?

什麼是內存池以及交易如何得到確認?

2026-01-24 06:00:16

什麼是內存池? 1.內存池是每個Bitcoin節點內的臨時存儲區域,用於保存未確認的交易。 2. 交易在廣播到網絡後但在礦工將其納入區塊之前進入內存池。 3. 每個完整節點都維護自己的內存池版本,由於延遲或策略變化,該版本可能略有不同。 4. 內存池的大小和組成會根據網絡擁塞、交易費用和區塊空間可用...

如何用加密貨幣賺取被動收入?

如何用加密貨幣賺取被動收入?

2026-01-13 07:39:45

質押機制1. 質押是指在錢包中鎖定一定數量的加密貨幣,以支持交易驗證和共識維護等網絡操作。 2. 參與者收到以他們所持有的相同代幣計價的獎勵,通常根據網絡定義的參數定期分配。 3. 以太坊向權益證明的過渡顯著增加了散戶通過 Lido 和 Rocket Pool 等平台的可及性。 4. 一些協議規定了...

什麼是零知識證明(ZK-Proofs)?

什麼是零知識證明(ZK-Proofs)?

2026-01-22 04:40:14

定義和核心概念1. 零知識證明(ZK-Proofs)是一種加密協議,使一方能夠向另一方證明陳述的真實性,而不會洩露超出該陳述有效性的任何潛在信息。 2. ZK-proof 必須滿足三個基本屬性:完整性、健全性和零知識——這意味著誠實的證明者可以說服誠實的驗證者,不誠實的證明者不能誤導驗證者,除非概率...

什麼是區塊鏈三難困境? (安全性、可擴展性和去中心化)

什麼是區塊鏈三難困境? (安全性、可擴展性和去中心化)

2026-01-15 17:00:25

了解核心衝突1. 區塊鏈三難困境描述了一個基本的架構約束,即在單個區塊鏈協議中同時最大化安全性、可擴展性和去中心化是極其困難的。 2. 每個重大設計決策都需要權衡——增加吞吐量通常需要減少節點數量或簡化共識邏輯,這會削弱去中心化或引入新的攻擊向量。 3. Bitcoin優先考慮安全性和去中心化,但將...

看所有文章

User not found or password invalid

Your input is correct