市值: $2.6836T 2.96%
體積(24小時): $86.4075B 26.77%
恐懼與貪婪指數:

32 - 害怕

  • 市值: $2.6836T 2.96%
  • 體積(24小時): $86.4075B 26.77%
  • 恐懼與貪婪指數:
  • 市值: $2.6836T 2.96%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

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

什麼是智能合約中的重入攻擊?

Reentrancy attacks exploit Ethereum’s external call mechanism, allowing malicious contracts to recursively drain funds before state updates—famously enabling The DAO hack.

2025/12/24 02:20

了解重入攻擊

1. 當惡意合約在初始執行完成之前重複回調另一個合約的易受攻擊的函數時,就會發生重入攻擊。

2. 此漏洞利用以太坊智能合約中的外部調用機制,在狀態更改最終確定之前將控制權轉移到外部地址。

3. 攻擊者部署一個包含回退或接收函數的合約,該函數會觸發目標提款或轉賬邏輯的遞歸調用。

4. 由於以太坊以單線程、同步的方式執行調用,並且默認情況下不強制執行原子狀態更新,因此在回調窗口期間餘額或標誌可能保持不變。

5. 因此,在沒有適當檢查的情況下,資金可能會從同一餘額中多次被耗盡,從而違反了系統預期的經濟不變性。

著名的歷史例子:DAO 黑客事件

1. 2016 年 6 月,名為 The DAO 的去中心化自治組織被盜走約360 萬枚 ETH ,當時價值超過 5000 萬美元。

2. 該漏洞存在於分割函數中,該函數允許用戶在提案通過後撤回其份額,但在轉移資金後更新了貢獻者的餘額。

3. 攻擊者部署了一個帶有後備函數的合約,該函數在餘額更新發生之前遞歸調用 split 函數。

4. 每次遞歸調用都會讀取原始餘額值,從而可以從相同的分配金額中重複提取。

5. 該事件引發了以太坊區塊鏈的硬分叉,導致以太坊和以太坊經典成為兩條獨立的鏈。

實現可重入的技術條件

1. 對不受信任地址的外部調用必須先於關鍵狀態修改,例如餘額更新或訪問標誌切換。

2. 合約必須依賴反映所有權或權利的可變存儲變量,而不強制執行重入防護。

3. 缺乏互斥模式(例如使用鎖定的布爾值或重入修飾符)會使嵌套調用上下文中的入口點不受保護。

4. 由於缺乏gas補貼限制和自動恢復行為,使用call()等低級調用而不是transfer()或send()等更安全的替代方法會增加風險。

5. 從過時或未經審核的庫繼承的合約可能會無意中暴露具有繼承的可重入表面的函數。

今天部署的緩解策略

1. 檢查-效果-交互模式要求驗證條件、更新內部狀態,然後才執行外部調用。

2. 重入防護(例如 OpenZeppelin 的ReentrancyGuard )使用鎖定的布爾值來防止活動執行期間函數重入。

3. 使用transfer()或send()代替原始call()會強制執行2300-gas 限制,使得後備函數無法執行複雜的邏輯,包括進一步的可重入調用。

4. Slither 和 MythX 等靜態分析工具可檢測開發和 CI 管道期間潛在的重入向量。

5. Certora 和 KEVM 等正式驗證框架在任意調用序列(包括嵌套外部調用)下驗證契約不變量。

常見問題解答

Q1.重入攻擊會發生在以太坊以外的區塊鏈上嗎? A1。是的。如果合約複製相同的有缺陷的交互模式,任何與 EVM 兼容的鏈(包括 BNB Chain、Polygon 和 Arbitrum)都同樣容易受到影響。具有類似外部調用語義的非 EVM 鏈,例如 Solana 在某些條件下的跨程序調用,也面臨類似的風險。

Q2。使用 require() 語句足以防止重入嗎? A2。不需要。 Require 語句驗證先決條件,但不會阻止重新輸入。它們在狀態改變之前運行,並且一旦發生外部調用就無法限制後續回調。

Q3。基於代理的可升級合約是否會引入額外的可重入表面? A3。是的。如果實現合約缺乏重入保護,並且代理在不攔截或驗證調用深度的情況下轉發調用,則可升級模式可以繼承或放大現有漏洞。

Q4。即使沒有惡意合約,閃電貸也能觸發重入嗎? A4。是的。閃電貸攻擊通常將價格預言機操縱與重入結合起來,以耗盡流動性池或貸款協議,如針對 dYdX、Harvest Finance 和 BurgerSwap 的攻擊——所有這些都依賴於關鍵路徑內不受保護的外部調用。

免責聲明:info@kdj.com

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

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

相關知識

什麼是 DAI?它與 USDT 有何不同?

什麼是 DAI?它與 USDT 有何不同?

2026-09-08 17:00:22

市場波動模式1. 自2021年以來,Bitcoin超過68%的交易日在24小時窗口內價格波動超過15%。 2. 在流動性較低的時期,尤其是在 02:00 至 06:00 UTC 期間,以太坊表現出比 Bitcoin 更高的日內波動性。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 事...

USDT、USDC 和 DAI:這些穩定幣有何不同?

USDT、USDC 和 DAI:這些穩定幣有何不同?

2026-09-20 05:59:44

Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...

為什麼穩定幣會失去 1 美元的掛鉤?

為什麼穩定幣會失去 1 美元的掛鉤?

2026-09-08 02:00:03

儲備組成和透明度差距1. 許多穩定幣聲稱完全由現金或短期美國國債支持,但儲備揭露往往缺乏即時驗證機制。 2. 第三方證明可能僅每季進行一次,從而留下較長的窗口,使不匹配的資產負債結構仍未被發現。 3. 一些發行人持有的商業票據或逆回購協議存在未反映在公共資產負債表中的交易對手風險。 4. 鏈下銀行關...

什麼是加密穩定幣 Depeg?

什麼是加密穩定幣 Depeg?

2026-09-24 16:39:41

脫鉤的定義與機制1. 當穩定幣的市場價格顯著偏離其預期錨定價值(對於與美元掛鉤的代幣來說,最常見的是 1.00 美元)時,就會發生加密穩定幣脫鉤。 2. 這種偏差不是短暫的波動,而是持續的信心喪失,體現在訂單簿失衡、流動性撤回和級聯贖回上。 3. 脫鉤源自於結構性缺陷,包括儲備不足或不透明、演算法再...

什麼是加密貨幣中的自我託管以及為什麼它很重要?

什麼是加密貨幣中的自我託管以及為什麼它很重要?

2026-09-10 04:19:32

定義和核心機制1. 自我保管是指個人保留對其私鑰的完全控制權,而不將該權力委託給任何第三方服務的做法。 2. 自我託管錢包的伺服器上不持有資產;相反,它提供了一個使用本地儲存的加密金鑰與區塊鏈網路互動的介面。 3. 使用者的裝置(無論是智慧型手機、桌上型電腦或硬體模組)託管種子短語和私鑰,並且在正常...

託管錢包與非託管錢包:有什麼區別?

託管錢包與非託管錢包:有什麼區別?

2026-09-17 03:19:46

託管錢包定義1. 託管錢包是一種由第三方服務提供者持有和管理用戶私鑰的數位資產儲存解決方案。 2. 使用者透過電子郵件、密碼和雙重認證等登入憑證存取資金,而不是直接加密控制。 3. 簡化帳戶恢復-忘記密碼或失去裝置存取權限的使用者可以透過平台管理的身份驗證協定重新獲得存取權限。 4. 這些錢包通常作...

什麼是 DAI?它與 USDT 有何不同?

什麼是 DAI?它與 USDT 有何不同?

2026-09-08 17:00:22

市場波動模式1. 自2021年以來,Bitcoin超過68%的交易日在24小時窗口內價格波動超過15%。 2. 在流動性較低的時期,尤其是在 02:00 至 06:00 UTC 期間,以太坊表現出比 Bitcoin 更高的日內波動性。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 事...

USDT、USDC 和 DAI:這些穩定幣有何不同?

USDT、USDC 和 DAI:這些穩定幣有何不同?

2026-09-20 05:59:44

Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...

為什麼穩定幣會失去 1 美元的掛鉤?

為什麼穩定幣會失去 1 美元的掛鉤?

2026-09-08 02:00:03

儲備組成和透明度差距1. 許多穩定幣聲稱完全由現金或短期美國國債支持,但儲備揭露往往缺乏即時驗證機制。 2. 第三方證明可能僅每季進行一次,從而留下較長的窗口,使不匹配的資產負債結構仍未被發現。 3. 一些發行人持有的商業票據或逆回購協議存在未反映在公共資產負債表中的交易對手風險。 4. 鏈下銀行關...

什麼是加密穩定幣 Depeg?

什麼是加密穩定幣 Depeg?

2026-09-24 16:39:41

脫鉤的定義與機制1. 當穩定幣的市場價格顯著偏離其預期錨定價值(對於與美元掛鉤的代幣來說,最常見的是 1.00 美元)時,就會發生加密穩定幣脫鉤。 2. 這種偏差不是短暫的波動,而是持續的信心喪失,體現在訂單簿失衡、流動性撤回和級聯贖回上。 3. 脫鉤源自於結構性缺陷,包括儲備不足或不透明、演算法再...

什麼是加密貨幣中的自我託管以及為什麼它很重要?

什麼是加密貨幣中的自我託管以及為什麼它很重要?

2026-09-10 04:19:32

定義和核心機制1. 自我保管是指個人保留對其私鑰的完全控制權,而不將該權力委託給任何第三方服務的做法。 2. 自我託管錢包的伺服器上不持有資產;相反,它提供了一個使用本地儲存的加密金鑰與區塊鏈網路互動的介面。 3. 使用者的裝置(無論是智慧型手機、桌上型電腦或硬體模組)託管種子短語和私鑰,並且在正常...

託管錢包與非託管錢包:有什麼區別?

託管錢包與非託管錢包:有什麼區別?

2026-09-17 03:19:46

託管錢包定義1. 託管錢包是一種由第三方服務提供者持有和管理用戶私鑰的數位資產儲存解決方案。 2. 使用者透過電子郵件、密碼和雙重認證等登入憑證存取資金,而不是直接加密控制。 3. 簡化帳戶恢復-忘記密碼或失去裝置存取權限的使用者可以透過平台管理的身份驗證協定重新獲得存取權限。 4. 這些錢包通常作...

看所有文章

User not found or password invalid

Your input is correct