-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
什麼是重入攻擊?智能合約如何防禦它?
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),我們將及時刪除。
- 比特幣、eCash 分叉和空投動態:深入探討加密貨幣的最新爭議
- 2026-05-03 12:55:01
- 2026 年邁阿密共識:Web3、區塊鏈、加密貨幣、NFT、Metaverse,會議,5 月 5 日 — 華爾街與數位前沿相遇的地方
- 2026-05-02 12:45:01
- 聯準會維持利率穩定,地緣政治緊張局勢引發比特幣價格下跌
- 2026-05-01 06:45:01
- 比特幣礦工為電網供電:收購俄亥俄州天然氣廠開啟數位黃金新時代
- 2026-05-01 00:45:01
- MegaETH的MEGA代幣登陸紐約:為即時區塊鏈設定新的效能基準
- 2026-05-01 00:55:01
- Solana 的滑坡:價格預測顯示阻力損失和潛在的進一步下跌
- 2026-05-01 06:45:01
相關知識
什麼是模組化區塊鏈? (架構基礎)
2026-04-16 12:39:57
什麼是模組化區塊鏈? 1. 模組化區塊鏈是一種架構範例,有意將核心區塊鏈功能分為不同的、可互通的層。 2. 與執行、共識、數據可用性和結算都發生在同一條鏈上的單鏈不同,模組化設計將每個責任分配給專門的層。 3. 這種分離實現了獨立優化-共識可以調整最終速度,而資料可用性層則專注於吞吐量和可驗證性。 ...
如何辨識假加密貨幣網站? (詐欺檢測)
2026-04-16 13:19:40
域名分析1. 合法的加密貨幣平台使用乾淨、令人難忘的網域名稱-通常將品牌名稱或核心服務包含在標準拉丁字元中。 2. 假網站經常採用視覺欺騙性替換:將“o”替換為“0”,將“l”替換為“1”,或將“I”替換為“|”模仿 binance.com 或 coinbase.com 等受信任網域。 3. 可疑域...
區塊鏈中的預言機是什麼? (外部資料)
2026-04-11 03:59:39
定義和核心功能1. 區塊鏈中的預言機是一種可信賴的第三方服務,為智慧合約提供外部數據。 2. 它充當鏈上邏輯和鏈下資訊來源(例如 API、資料庫、網路來源或物聯網設備)之間的橋樑。 3. 如果沒有預言機,智能合約將僅限於已經儲存在區塊鏈分類帳中的資料。 4. 合約執行的完整性在很大程度上取決於Ora...
如何解釋交易哈希(TxID)? (付款證明)
2026-04-10 23:19:44
什麼是交易哈希? 1. 交易哈希,也稱為 TxID 或交易 ID,是透過將加密哈希函數應用於區塊鏈交易的序列化資料而產生的唯一字母數字字串。 2. 它作為每個交易的不可變指紋,確保在正常操作下沒有兩個不同的交易產生相同的雜湊值。 3.不同鏈的長度和字元集有所不同:Bitcoin使用64個字元的小寫十...
什麼是GameFi? (邊玩邊賺錢的基礎知識)
2026-04-13 11:00:17
定義及核心架構1. GameFi代表遊戲與金融的融合,完全建立在公共區塊鏈基礎設施上。 2. 它將去中心化金融原語——例如質押、流動性提供、流動性挖礦和治理投票——直接嵌入到互動式遊戲機制中。 3. 每項遊戲內資產都以不可替代代幣(NFT)的形式呈現,賦予玩家跨平台可驗證、可轉讓和可組合的所有權。 ...
如何使用NFT市場? (購買和銷售)
2026-04-19 12:40:30
設定 Web3 錢包1. 透過官方瀏覽器擴充功能或行動應用程式安裝 MetaMask 或 Trust Wallet。 2. 建立一個新錢包並離線安全儲存 12 字恢復短語。 3. 使用原生鏈代幣(以太坊為 ETH、OKX 鏈為 OKT、Polygon 為 MATIC)為錢包提供資金,以支付 Gas ...
什麼是模組化區塊鏈? (架構基礎)
2026-04-16 12:39:57
什麼是模組化區塊鏈? 1. 模組化區塊鏈是一種架構範例,有意將核心區塊鏈功能分為不同的、可互通的層。 2. 與執行、共識、數據可用性和結算都發生在同一條鏈上的單鏈不同,模組化設計將每個責任分配給專門的層。 3. 這種分離實現了獨立優化-共識可以調整最終速度,而資料可用性層則專注於吞吐量和可驗證性。 ...
如何辨識假加密貨幣網站? (詐欺檢測)
2026-04-16 13:19:40
域名分析1. 合法的加密貨幣平台使用乾淨、令人難忘的網域名稱-通常將品牌名稱或核心服務包含在標準拉丁字元中。 2. 假網站經常採用視覺欺騙性替換:將“o”替換為“0”,將“l”替換為“1”,或將“I”替換為“|”模仿 binance.com 或 coinbase.com 等受信任網域。 3. 可疑域...
區塊鏈中的預言機是什麼? (外部資料)
2026-04-11 03:59:39
定義和核心功能1. 區塊鏈中的預言機是一種可信賴的第三方服務,為智慧合約提供外部數據。 2. 它充當鏈上邏輯和鏈下資訊來源(例如 API、資料庫、網路來源或物聯網設備)之間的橋樑。 3. 如果沒有預言機,智能合約將僅限於已經儲存在區塊鏈分類帳中的資料。 4. 合約執行的完整性在很大程度上取決於Ora...
如何解釋交易哈希(TxID)? (付款證明)
2026-04-10 23:19:44
什麼是交易哈希? 1. 交易哈希,也稱為 TxID 或交易 ID,是透過將加密哈希函數應用於區塊鏈交易的序列化資料而產生的唯一字母數字字串。 2. 它作為每個交易的不可變指紋,確保在正常操作下沒有兩個不同的交易產生相同的雜湊值。 3.不同鏈的長度和字元集有所不同:Bitcoin使用64個字元的小寫十...
什麼是GameFi? (邊玩邊賺錢的基礎知識)
2026-04-13 11:00:17
定義及核心架構1. GameFi代表遊戲與金融的融合,完全建立在公共區塊鏈基礎設施上。 2. 它將去中心化金融原語——例如質押、流動性提供、流動性挖礦和治理投票——直接嵌入到互動式遊戲機制中。 3. 每項遊戲內資產都以不可替代代幣(NFT)的形式呈現,賦予玩家跨平台可驗證、可轉讓和可組合的所有權。 ...
如何使用NFT市場? (購買和銷售)
2026-04-19 12:40:30
設定 Web3 錢包1. 透過官方瀏覽器擴充功能或行動應用程式安裝 MetaMask 或 Trust Wallet。 2. 建立一個新錢包並離線安全儲存 12 字恢復短語。 3. 使用原生鏈代幣(以太坊為 ETH、OKX 鏈為 OKT、Polygon 為 MATIC)為錢包提供資金,以支付 Gas ...
看所有文章














