-
bitcoin $77146.398531 USD
-0.23% -
ethereum $2514.088317 USD
-0.37% -
tether $0.999674 USD
0.00% -
bnb $722.500739 USD
-1.34% -
xrp $1.361192 USD
-0.23% -
usd-coin $0.999776 USD
-0.01% -
solana $101.320251 USD
-0.42% -
tron $0.339801 USD
0.16% -
hyperliquid $78.899137 USD
-0.02% -
zcash $1141.149289 USD
-0.18% -
dogecoin $0.084480 USD
-0.05% -
monero $530.834712 USD
-1.66% -
chainlink $11.453705 USD
-0.73% -
unus-sed-leo $9.056535 USD
-0.61% -
cardano $0.207439 USD
-0.31%
什麼是重入攻擊以及如何在合約中防止它?
Reentrancy attacks exploit unchecked external calls in smart contracts, allowing attackers to drain funds by re-entering functions before state updates—highlighted by the $60M DAO hack.
2025/11/10 16:20
了解智能合約中的重入攻擊
1. 當惡意合約在初始執行完成之前反復回調易受攻擊的函數時,就會發生重入攻擊。這種遞歸行為利用了智能合約中外部調用的順序和狀態變化。
2. 核心漏洞在於在更新內部狀態之前發送資金或進行外部調用的合約。攻擊者可以利用這個窗口,通過重新進入提現功能來多次提現資金。
3. 最臭名昭著的例子之一是 2016 年的 DAO 黑客事件,由於可重入缺陷,價值超過 6000 萬美元的以太幣被耗盡。攻擊者使用後備函數遞歸調用提款機制。
4. 這些攻擊不僅限於以太幣傳輸。如果沒有適當的保護措施,對用戶控制的合約的任何外部調用都可能被武器化。
5.重入仍然是去中心化應用程序中最關鍵的安全風險之一,特別是在處理大量用戶資金的 DeFi 協議中。
支持重入的常見模式
1. 遵循“先調用,後更新”模式的合約本質上很容易受到影響。在減少用戶餘額之前發送以太幣或代幣允許攻擊者重新進入,更新後的餘額仍反映原始金額。
2. 依賴於低級調用(如call() 、 delegatecall()或send()且未經適當檢查的函數會增加暴露風險。這些方法會觸發接收者的回退或接收功能,其中可能包含惡意邏輯。
3. 拉拉-推式支付模式使用不當會帶來風險。基於推送的系統在交易期間主動發送資金,為遞歸利用創造了機會。
4.跨多個接口的複雜合約交互放大了危險。當一個合約調用另一個合約並且兩者都具有可變狀態時,跟踪執行流程變得困難,從而增加了監督的機會。
5.如果狀態更新不是原子的並且在外部交互之後發生,即使看似安全的代碼也可能受到損害。
有效的預防策略
1. 嚴格應用檢查-效果-交互 (CEI) 模式。始終驗證輸入,更新內部狀態變量,然後才進行外部調用。該序列消除了重新進入窗口。
2. 使用 OpenZeppelin 的ReentrancyGuard等庫提供的互斥鎖或重入防護。它們強制執行鎖定機制,防止函數在執行時重新進入。
3.限制低級調用的使用。更喜歡像transfer()這樣的高級傳輸函數,它們具有內置的保護,例如通常會阻止遞歸執行的氣體津貼限制。
4. 實施提款模式而不是直接付款。讓用戶通過單獨的功能發起資金檢索,最大限度地減少敏感操作期間的外部調用次數。
5.應將定期審計和靜態分析工具集成到開發生命週期中,以在部署之前檢測潛在的重入向量。
常見問題解答
回退函數在重入攻擊中的作用是什麼?當合約收到沒有數據的以太幣時,回退函數會自動執行。攻擊者精心設計惡意回退,重新調用易受攻擊的函數,從而創建一個循環,在原始交易完成之前耗盡資金。
同一個合約中的不同函數之間可以發生重入嗎?是的。當一個函數進行外部調用並返回到同一合約的另一個函數時,就會發生跨函數重入,從而利用尚未更新的共享狀態。適當的國家管理和警衛對於阻止此類路徑至關重要。
代理合約是否不受重入影響?不會。如果邏輯實現包含未經檢查的外部調用,代理合約仍然容易受到攻擊。由於代理將調用委託給可升級的邏輯合約,因此邏輯層中的任何缺陷(包括可重入性)仍然可以被利用。
Gas 限制如何影響重入嘗試?一些早期的防禦依賴於消耗所有可用的氣體來阻止遞歸。然而,現代攻擊通過使用精確的氣體估計來規避這一點。僅僅依靠gas limit是不可靠的;結構代碼模式提供更強的保護。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- 未經證實的傳言:Chainlink 鯨魚、10M LINK 和 17% 的修正 – 到底發生了什麼事?
- 2026-09-13 16:55:01
- 卡爾達諾價格預測、分析與變動:因應市場波動與未來潛力
- 2026-09-13 16:25:01
- Revolut 資料外洩:虛假政府要求利用安全漏洞,揭露客戶數據
- 2026-09-13 09:00:02
- Blockstream、Liquid Network、比特幣:「被盜」資金的僵局
- 2026-09-13 08:35:01
- Ripple RLUSD 流通量達到 24 億美元:仔細觀察穩定幣的軌跡
- 2026-09-13 04:50:01
- XRP百萬富翁夢想:10000個XRP能讓你在20年內致富嗎?
- 2026-09-13 04:50:01
相關知識
如何查看DOGE期貨成交量及持倉量?
2026-09-12 08:39:38
了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...
如何查看BTC期貨交易量及持倉量?
2026-09-12 15:19:55
BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...
如何看懂DOGEUSDT永續合約圖表?
2026-09-11 19:19:48
了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...
如何閱讀幣安上的ETHUSDT期貨圖表?
2026-09-13 05:20:26
Bitcoin 減半機制1. 每產生 21 萬個區塊,Bitcoin 個礦工的區塊獎勵減半。 2. 此事件大約每四年發生一次,並被硬編碼到 Bitcoin 的協定中。 3. 最近一次減半將每個區塊的獎勵從 6.25 BTC 減少到 3.125 BTC。 4. 總供應上限仍固定在 2,100 萬 BT...
如何查詢幣安Bitcoin合約資金費用?
2026-09-13 18:00:17
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...
如何在幣安查看BTC合約資金費用?
2026-09-10 08:00:06
找到資金費率顯示1. 進入幣安合約交易介面,選擇BTCUSDT永續合約。 2. 觀察價格圖表正下方或訂單簿附近的區域-該區域包含一個標有資金費率的標籤框。 3. 顯示數值即時更新,反映目前每小時的資金費率,無論是正數或負數。 4. 點選資金費率方塊將開啟一個彈出窗口,顯示多個結算週期的歷史資金價值。...
如何查看DOGE期貨成交量及持倉量?
2026-09-12 08:39:38
了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...
如何查看BTC期貨交易量及持倉量?
2026-09-12 15:19:55
BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...
如何看懂DOGEUSDT永續合約圖表?
2026-09-11 19:19:48
了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...
如何閱讀幣安上的ETHUSDT期貨圖表?
2026-09-13 05:20:26
Bitcoin 減半機制1. 每產生 21 萬個區塊,Bitcoin 個礦工的區塊獎勵減半。 2. 此事件大約每四年發生一次,並被硬編碼到 Bitcoin 的協定中。 3. 最近一次減半將每個區塊的獎勵從 6.25 BTC 減少到 3.125 BTC。 4. 總供應上限仍固定在 2,100 萬 BT...
如何查詢幣安Bitcoin合約資金費用?
2026-09-13 18:00:17
Bitcoin 減半機制1. Bitcoin 的協議強制執行固定的發行時間表,其中大約每 210,000 個區塊,區塊獎勵就會減少一半。 2. 該事件大約每四年發生一次,直接減少了新進入流通的 BTC 數量。 3.截至2020年減半,礦工每區塊獲得6.25 BTC;下次減少將達到 3.125 BTC...
如何在幣安查看BTC合約資金費用?
2026-09-10 08:00:06
找到資金費率顯示1. 進入幣安合約交易介面,選擇BTCUSDT永續合約。 2. 觀察價格圖表正下方或訂單簿附近的區域-該區域包含一個標有資金費率的標籤框。 3. 顯示數值即時更新,反映目前每小時的資金費率,無論是正數或負數。 4. 點選資金費率方塊將開啟一個彈出窗口,顯示多個結算週期的歷史資金價值。...
看所有文章














