-
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%
常見的智能合同漏洞
To enhance smart contract security, developers should implement reentrancy guards, use SafeMath libraries, enforce strict access control, and avoid complex logic in fallback functions.
2025/07/12 01:21
重新進入攻擊
智能合約中最臭名昭著的漏洞之一是重新進入攻擊,該攻擊在2016年導致了DAO黑客攻擊。這種漏洞發生在惡意合同在初始功能執行完成之前返回原始合同中。結果,可以利用未經正確檢查的外部呼叫的功能。
為了防止重新進入攻擊,開發人員應避免對未知或未經信任的合同進行外部呼叫。一種常見的緩解技術是使用檢查效應互動模式。這涉及在進行任何外部呼叫之前更新合同狀態。此外,使用MUTEX鎖實施重新進入警衛可以幫助阻止遞歸呼叫。
另一種方法是使用諸如OpenZeppelin的重新進入守衛之類的備受審核的庫,該庫提供了諸如非倫比特之類的修飾符來限制在執行過程中重新輸入功能。開發人員還必須考慮限制可以在單個呼叫中轉移的以太或令牌的數量,以減少此類攻擊的潛在損害。
整數溢出和下水
在0.8.0之前用堅固的版本編寫的智能合約容易受到整數溢出和底流的影響。當算術操作導致超過給定數據類型的最小值允許值(例如UINT256)的最大值或降至最低允許值以下的值時,就會發生這些。
例如,如果類型UINT256的變量保持值0並減少,則將下流到最大值(2^256-1),可能導致餘額不正確或未經授權的訪問。為了減輕這種情況,開發人員應使用OpenZeppelin提供的Safemath庫,該庫對算術操作進行明確檢查。
從堅固性0.8.0開始,默認情況下啟用了這些檢查,除非使用未經檢查的{...}塊明確未經檢查,否則算術操作將在溢出或下面的錯誤上丟棄錯誤。但是,即使有了這種內置的保護,開發人員在禁用安全檢查以進行性能優化時必須保持謹慎。
驗證所有輸入並確保數學操作正確界限,尤其是在處理用戶提供的值或涉及令牌傳輸的動態計算時,也至關重要。
前進攻擊
在以太坊這樣的公共區塊鏈中,交易在開采之前就可以看到,這為前進攻擊打開了大門。攻擊者可以觀察未決的交易,並以較高的汽油費用提交自己的費用,以使其首先執行,從而操縱結果。
這種漏洞通常會影響交易訂單重要的分散交換(DEX)和其他應用。例如,如果用戶以一定的價格提交交易,則攻擊者可以在交易中進行前進以獲得更高的利率,從而有效地竊取價值。
為了防止前線運行,開發人員可以實施諸如投資披露計劃之類的機制。在這種方法中,用戶首先提交了交易的哈希版本(提交階段),然後後來透露了全部細節(顯示階段),從而阻止攻擊者知道確切的操作,直到為時已晚。
另外,在合同中使用隨機性或基於時間的條件可以使預測交易結果更加困難。但是,真正的隨機性在鏈上是具有挑戰性的,因此開發人員通常依靠鏈甲骨文或加密承諾來模糊敏感信息。
不當訪問控制
訪問控制是安全智能合同開發的關鍵方面。不當訪問控制可能會導致未經授權執行特權職能,從而使攻擊者能夠更改合同狀態,排出資金或禁用合同功能。
一個典型的錯誤不是限制誰可以調用敏感功能。例如,一個僅由合同所有者調用的函數可能會缺少像Onlyander這樣的修飾符,使任何人都可以調用它。當使用硬編碼或未正確吊銷權限時,會出現另一個問題。
為了解決這個問題,開發人員應利用基於角色的訪問控制模式,例如在Openzeppelin的擁有和角色庫中發現的模式。更改關鍵參數的功能應包括需要驗證呼叫者身份或角色的語句或修飾符。
此外,多簽名錢包可用於管理行動,在執行高風險操作之前需要多個批准。定期審核和對許可功能的測試對於確保不存在意外訪問路徑至關重要。
拒絕服務(DOS)漏洞
智能合約可能會成為拒絕服務(DOS)攻擊的受害者,惡意演員阻止合法用戶與合同互動。這可以通過各種方式發生,例如強迫過多的氣體消耗或無限期阻止執行路徑。
一個例子是通過一系列地址循環以發送以太的合同。如果一個接收者的後備功能會消耗過多的氣體或恢復,則可能導致整個循環失敗,而將資金卡住。
為了減輕DOS風險,開發人員應避免依賴動態數組的循環。取而代之的是,可以實現鍊鍊解決方案或降價付款模型,在這種情況下,用戶本身會啟動提款,而不是自動推動資金。
此外,合同應包括失敗的後備機制,例如允許管理員手動干預或重試失敗的操作。在功能調用中使用氣體限制和超時也可以防止無限期阻塞。
後備功能漏洞
後備功能可作為以太轉移或未識別功能調用的默認處理程序。但是,如果沒有仔細設計,他們可以引入嚴重的安全缺陷。後備功能必須保持簡單,並且不應包含複雜的邏輯或狀態更改。
一個顯著的風險是,當後備功能包含循環或調用另一個合同時,增加了氣體外例外或重新進入的機會。此外,如果合同依靠通過後備接收以太,但不考慮發件人使用Transfer()或Send()的方案,則由於有限的汽油轉發而可能出乎意料地失敗。
開發人員應確保後備功能要么以恢復或處理最小邏輯拒絕意外的以太。還建議通過使用Recect()和sholdback()功能在堅固性0.6.0中引入的功能來分開應付和不付款的後備行為。
徹底審核後備邏輯並測試邊緣案例,例如從自定義後備的合同中發送以太,對於避免中斷或漏洞至關重要。
常見問題
我可以使用什麼工具來檢測智能合同漏洞?您可以使用Slither,MyThx和Oyente等靜態分析工具來識別常見漏洞。諸如OpenZeppelin Defender和溫柔的平台提供了運行時監控和調試功能。始終將自動化工具與手動代碼審查和正式驗證結合在一起,以進行全面覆蓋。
如何在智能合同中測試重新進入?編寫單元測試,以模擬旨在重新進入功能的惡意合同的外部呼叫。使用硬漢或鬆露框架與模擬合約部署和互動。您還可以利用echidna(例如Echidna)的模糊工具來自動化邊緣案例的測試。
堅固使用內聯合物安全嗎?內聯裝配可以對EVM進行低級控制,但繞開了許多Solidity的安全功能。只有經驗豐富的開發人員才能使用它並進行徹底審查。除非絕對需要進行優化或特定的EVM功能,否則避免使用它。
部署後可以安全升級合同嗎?是的,使用代理模式的可升級合同允許在保留狀態時進行更新。但是,他們引入了複雜性和新的攻擊表面。使用已建立的升級性模式,例如透明或Openzeppelin的UUP代理,並確保正確的訪問控制和徹底的測試。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- Vitalik Buterin 重新思考以太坊的 L2 鏈:可擴展性和隱私的新時代?
- 2026-02-05 22:20:01
- Espresso 的代幣經濟學揭曉,Coinbase 路線圖引發興趣,以及現代代幣經濟學的一瞥
- 2026-02-05 22:15:01
- 瑞銀擁抱加密貨幣和比特幣:邁向代幣化的戰略支點
- 2026-02-05 22:25:01
- 比特幣崩盤引發山寨幣輪換:在加密貨幣波動中引導投資
- 2026-02-05 22:20:01
- 加密貨幣的十字路口:大賭注、慘痛損失和不斷發展的比特幣策略
- 2026-02-05 22:15:01
- 數字資產變大:倫敦論壇歡呼穩定幣激增和機構猛攻
- 2026-02-05 22:10:02
相關知識
期貨中如何管理情緒和“報復性交易”?
2026-02-05 00:19:32
了解期貨市場的情緒觸發因素1. 市場波動直接影響心理狀態,往往會因價格快速波動而加劇恐懼或興奮。 2. 損失會激活大腦的威脅反應系統,導致衝動決策而不是系統分析。 3. 社交媒體信息和群聊經常強化情緒化敘事,扭曲客觀風險評估。 4. 過度接觸實時損益更新會增加皮質醇水平,從而降低頭寸管理期間的認知靈...
如何使用蠟燭收盤確認進行期貨入場?
2026-02-05 16:20:22
了解蠟燭收盤確認1. 當燭台的最終價格超出預定水平時,蠟燭收盤確認發生,表明潛在的趨勢延續或逆轉。 2. 交易者依賴的是收盤價,而不是日內燭線或開盤價,因為它反映了該時間間隔的集體市場共識。 3. 在期貨交易中,槓桿會放大收益和損失,等待蠟燭完全收盤可以消除基於虛假突破的過早入場。 4. 此方法對於...
如何利用恐懼和貪婪指數分析市場情緒?
2026-02-05 07:40:21
了解恐懼和貪婪指數1. 恐懼和貪婪指數是一個綜合指標,旨在量化加密貨幣投資者普遍的情緒狀態。它匯總了多個來源的數據,包括波動性、市場勢頭、社交媒體活動、調查結果、Bitcoin 主導地位和搜索趨勢。 2. 0分代表極度恐懼,100分代表極度貪婪。 0-24 之間的值表示強烈恐懼,25-49 表示恐懼...
如何使用反釣魚碼保護您的期貨賬戶?
2026-02-05 20:40:18
了解加密貨幣期貨交易中的反網絡釣魚代碼1. 反釣魚碼是期貨交易所生成的唯一字母數字字符串,用於驗證用戶登錄會話和交易請求。 2. 這些代碼充當標準雙因素身份驗證之外的附加驗證層,專門用於防止通過網絡釣魚網站或惡意瀏覽器擴展進行未經授權的訪問。 3. 啟用後,每次提款、API 密鑰創建或保證金調整都會...
如何使用成交量概況來查找關鍵的期貨入場水平?
2026-02-04 23:39:35
了解卷配置文件結構1. 成交量概況顯示指定時間段內特定價格水平的交易量分佈,在圖表上形成水平直方圖。 2. 控制點(POC)代表成交量集中度最高的價格水平,通常充當價格反轉的磁石。 3. 價值區域高位 (VAH) 和價值區域低位 (VAL) 包含佔總交易量 70% 的範圍,標誌著統計上顯著的支撐和阻...
如何設置您的第一個加密貨幣期權交易以進行對沖?
2026-02-05 17:59:32
市場波動模式1. Bitcoin 和以太坊等主要加密貨幣在 24 小時窗口內價格波動超過 15% 的情況經常發生。 2. 交易所訂單簿失衡經常引發級聯清算,尤其是在周末或亞洲交易時段等流動性較低的時期。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 偏離)直接發生在 BTC 在 72...
期貨中如何管理情緒和“報復性交易”?
2026-02-05 00:19:32
了解期貨市場的情緒觸發因素1. 市場波動直接影響心理狀態,往往會因價格快速波動而加劇恐懼或興奮。 2. 損失會激活大腦的威脅反應系統,導致衝動決策而不是系統分析。 3. 社交媒體信息和群聊經常強化情緒化敘事,扭曲客觀風險評估。 4. 過度接觸實時損益更新會增加皮質醇水平,從而降低頭寸管理期間的認知靈...
如何使用蠟燭收盤確認進行期貨入場?
2026-02-05 16:20:22
了解蠟燭收盤確認1. 當燭台的最終價格超出預定水平時,蠟燭收盤確認發生,表明潛在的趨勢延續或逆轉。 2. 交易者依賴的是收盤價,而不是日內燭線或開盤價,因為它反映了該時間間隔的集體市場共識。 3. 在期貨交易中,槓桿會放大收益和損失,等待蠟燭完全收盤可以消除基於虛假突破的過早入場。 4. 此方法對於...
如何利用恐懼和貪婪指數分析市場情緒?
2026-02-05 07:40:21
了解恐懼和貪婪指數1. 恐懼和貪婪指數是一個綜合指標,旨在量化加密貨幣投資者普遍的情緒狀態。它匯總了多個來源的數據,包括波動性、市場勢頭、社交媒體活動、調查結果、Bitcoin 主導地位和搜索趨勢。 2. 0分代表極度恐懼,100分代表極度貪婪。 0-24 之間的值表示強烈恐懼,25-49 表示恐懼...
如何使用反釣魚碼保護您的期貨賬戶?
2026-02-05 20:40:18
了解加密貨幣期貨交易中的反網絡釣魚代碼1. 反釣魚碼是期貨交易所生成的唯一字母數字字符串,用於驗證用戶登錄會話和交易請求。 2. 這些代碼充當標準雙因素身份驗證之外的附加驗證層,專門用於防止通過網絡釣魚網站或惡意瀏覽器擴展進行未經授權的訪問。 3. 啟用後,每次提款、API 密鑰創建或保證金調整都會...
如何使用成交量概況來查找關鍵的期貨入場水平?
2026-02-04 23:39:35
了解卷配置文件結構1. 成交量概況顯示指定時間段內特定價格水平的交易量分佈,在圖表上形成水平直方圖。 2. 控制點(POC)代表成交量集中度最高的價格水平,通常充當價格反轉的磁石。 3. 價值區域高位 (VAH) 和價值區域低位 (VAL) 包含佔總交易量 70% 的範圍,標誌著統計上顯著的支撐和阻...
如何設置您的第一個加密貨幣期權交易以進行對沖?
2026-02-05 17:59:32
市場波動模式1. Bitcoin 和以太坊等主要加密貨幣在 24 小時窗口內價格波動超過 15% 的情況經常發生。 2. 交易所訂單簿失衡經常引發級聯清算,尤其是在周末或亞洲交易時段等流動性較低的時期。 3. 穩定幣脫鉤事件(例如 2023 年 3 月的 USDC 偏離)直接發生在 BTC 在 72...
看所有文章














