市值: $2.6304T -1.38%
體積(24小時): $85.1349B -1.73%
恐懼與貪婪指數:

67 - 貪婪

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

選擇語言

選擇語言

選擇貨幣

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

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

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 事...

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

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

2026-09-08 02:00:03

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

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

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

2026-09-10 04:19:32

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

什麼是閃電網路? Bitcoin 交易如何變得更快?

什麼是閃電網路? Bitcoin 交易如何變得更快?

2026-09-08 07:00:16

閃電網路核心架構1. 閃電網路作為直接建構在 Bitcoin 區塊鏈之上的第二層協定運行,完全依賴 Bitcoin 的加密安全模型,無需引入新的共識規則。 2. 使用2-of-2多重簽名地址在參與者之間建立雙向支付通道,雙方必須共同簽名才能將資金移出通道。 3. 每個通道都透過鏈上融資交易進行初始化...

什麼是加密預言機?區塊鏈如何取得真實世界的數據?

什麼是加密預言機?區塊鏈如何取得真實世界的數據?

2026-09-08 19:20:07

定義和核心功能1. 加密預言機是一種可信任的第三方服務,可作為區塊鏈網路和外部資料來源之間的橋樑。 2. 它獲取、驗證鏈下訊息,並將其傳遞給部署在鏈上的智能合約,例如價格、體育比分、天氣狀況或 API 響應。 3. 如果沒有預言機,智能合約將與現實世界的事件隔離,無法執行依賴外部觸發器的邏輯。 4....

Bitcoin 與萊特幣:主要區別是什麼?

Bitcoin 與萊特幣:主要區別是什麼?

2026-09-08 20:20:11

起源和基礎架構1. Bitcoin 於 2009 年出現,作為首個去中心化加密貨幣,建立在使用 SHA-256 雜湊演算法的工作量證明共識機制之上。 2. 萊特幣於 2011 年作為 Bitcoin 開源程式碼庫的直接分支推出,但用 Scrypt 取代了 SHA-256,有意提高了早期 ASIC 主...

什麼是 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 事...

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

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

2026-09-08 02:00:03

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

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

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

2026-09-10 04:19:32

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

什麼是閃電網路? Bitcoin 交易如何變得更快?

什麼是閃電網路? Bitcoin 交易如何變得更快?

2026-09-08 07:00:16

閃電網路核心架構1. 閃電網路作為直接建構在 Bitcoin 區塊鏈之上的第二層協定運行,完全依賴 Bitcoin 的加密安全模型,無需引入新的共識規則。 2. 使用2-of-2多重簽名地址在參與者之間建立雙向支付通道,雙方必須共同簽名才能將資金移出通道。 3. 每個通道都透過鏈上融資交易進行初始化...

什麼是加密預言機?區塊鏈如何取得真實世界的數據?

什麼是加密預言機?區塊鏈如何取得真實世界的數據?

2026-09-08 19:20:07

定義和核心功能1. 加密預言機是一種可信任的第三方服務,可作為區塊鏈網路和外部資料來源之間的橋樑。 2. 它獲取、驗證鏈下訊息,並將其傳遞給部署在鏈上的智能合約,例如價格、體育比分、天氣狀況或 API 響應。 3. 如果沒有預言機,智能合約將與現實世界的事件隔離,無法執行依賴外部觸發器的邏輯。 4....

Bitcoin 與萊特幣:主要區別是什麼?

Bitcoin 與萊特幣:主要區別是什麼?

2026-09-08 20:20:11

起源和基礎架構1. Bitcoin 於 2009 年出現,作為首個去中心化加密貨幣,建立在使用 SHA-256 雜湊演算法的工作量證明共識機制之上。 2. 萊特幣於 2011 年作為 Bitcoin 開源程式碼庫的直接分支推出,但用 Scrypt 取代了 SHA-256,有意提高了早期 ASIC 主...

看所有文章

User not found or password invalid

Your input is correct