-
bitcoin $76624.373304 USD
-1.79% -
ethereum $2250.136487 USD
-1.36% -
tether $0.998277 USD
-0.04% -
bnb $691.737526 USD
-2.23% -
xrp $1.250415 USD
0.10% -
usd-coin $0.999636 USD
-0.01% -
solana $91.769993 USD
-2.60% -
tron $0.320718 USD
1.77% -
hyperliquid $83.540560 USD
-2.42% -
zcash $1129.534445 USD
-10.74% -
dogecoin $0.073771 USD
-2.08% -
monero $615.670132 USD
1.37% -
unus-sed-leo $9.294663 USD
-1.19% -
chainlink $11.068406 USD
-2.21% -
cardano $0.186724 USD
-2.00%
常見的智能合同漏洞
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),我們將及時刪除。
- 美國中期選舉、預測市場和加密貨幣競賽:華盛頓未來的高風險賭注
- 2026-11-04 04:30:22
- 數位資產、全球金融和人工智慧:在 DavosWeb3 及其他領域探索下一個前沿
- 2026-11-04 04:30:22
- 在更廣泛的市場困境中,AVAX 價格下跌;機構興趣依然濃厚
- 2026-11-03 12:35:02
- 為什麼量化價格下跌?深入探討 QNT 最近在市場動盪中的下滑
- 2026-11-03 12:55:01
- Egrag Crypto 的 XRP 價格圖表分析:您準備好迎接「最大的第三波浪潮」了嗎?
- 2026-11-03 01:15:01
- Bed Bath & Beyond 母公司支援 tZERO 估值 3.5 億美元的 SPAC 交易:紐約人需要知道什麼
- 2026-11-03 01:15:01
相關知識
如何計算持有 BTCUSDT 期貨部位的總成本
2026-10-26 04:06:35
BTCUSDT 期貨部位的總成本構成1. 持有BTCUSDT期貨部位的總成本包括顯性費用和隱性費用。顯性成本包括開倉和平倉交易費用,而隱性成本主要來自一段時間內的資金費率支付或收入。 2. 開倉費用是依照入場時的名目價值與交易所的吃單/掛單費用表的乘積計算-對於主要平台上的吃單來說,開倉費用通常在 ...
如何同時監控 XRPUSDT 資金費率和未平倉合約
2026-10-20 18:39:42
XRPUSDT 永續合約的資金費率機制1. XRPUSDT永續合約的資金費率每八小時計算一次,使用XRP和USDT計價借貸市場之間的溢價指數和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生性商品 API 端點中發布即時資金費率數據,從而實現儀表板或警報系統的自動攝取。 3. ...
如何設定 SOLUSDT 永續合約損益兩平止損
2026-10-23 09:34:18
了解損益平衡停損機制1. 損益平衡停損是一種動態訂單,隨著部位獲利變動而向上調整,執行時鎖定零淨損失。 2. 它僅在交易達到預定利潤閾值後才起作用——通常是初始風險或入場費的 1 至 2 倍。 3. 在幣安 SOLUSDT 永續合約上,此邏輯必須手動觸發或編寫腳本,因為本機交易所 UI 不會自動將停...
如何使用幣安期貨計算器進行 ETHUSDT 交易
2026-10-21 02:00:11
了解幣安期貨計算器介面1. 此計算器直接嵌入幣安合約交易介面中,可透過訂單輸入面板下的 ETHUSDT 永續合約頁面存取。 2. 隨著使用者調整輸入欄位(包括倉位大小、入場價格、槓桿水平以及止盈或停損水平),它會動態更新。 3. 接受多種格式的輸入值:合約數量(ETH)、名目價值(USDT)或保證金...
合約強平前如何查看BTCUSDT標記價格
2026-10-26 12:20:18
了解BTCUSDT期貨的標記價格1. 標記價格是交易所為防止市場波動期間出現不公平清算而使用的計算值。 2.反映了來自多個來源的公平、穩定的參考價格,包括指數價格和資金費率。 3. 與最新成交價不同,標記價格包含頂級現貨交易所的時間加權平均值,以降低操縱風險。 4. 在幣安上,BTCUSDT標記價格...
如何調整 TRUMPUSDT 永續合約的槓桿
2026-10-30 22:19:37
了解 TRUMPUSDT 永續合約機制1. TRUMPUSDT 是在多個一級衍生品交易所上市的主題永續期貨合約,旨在追蹤圍繞美國政治敘事而非基礎資產基本面的價格情緒。 2.依平台不同,採用標準的反向或線性結算邏輯,以USDT作為報價和保證金資產。 3. 合約使用的標記價格源自現貨 BTC/USDT、...
如何計算持有 BTCUSDT 期貨部位的總成本
2026-10-26 04:06:35
BTCUSDT 期貨部位的總成本構成1. 持有BTCUSDT期貨部位的總成本包括顯性費用和隱性費用。顯性成本包括開倉和平倉交易費用,而隱性成本主要來自一段時間內的資金費率支付或收入。 2. 開倉費用是依照入場時的名目價值與交易所的吃單/掛單費用表的乘積計算-對於主要平台上的吃單來說,開倉費用通常在 ...
如何同時監控 XRPUSDT 資金費率和未平倉合約
2026-10-20 18:39:42
XRPUSDT 永續合約的資金費率機制1. XRPUSDT永續合約的資金費率每八小時計算一次,使用XRP和USDT計價借貸市場之間的溢價指數和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生性商品 API 端點中發布即時資金費率數據,從而實現儀表板或警報系統的自動攝取。 3. ...
如何設定 SOLUSDT 永續合約損益兩平止損
2026-10-23 09:34:18
了解損益平衡停損機制1. 損益平衡停損是一種動態訂單,隨著部位獲利變動而向上調整,執行時鎖定零淨損失。 2. 它僅在交易達到預定利潤閾值後才起作用——通常是初始風險或入場費的 1 至 2 倍。 3. 在幣安 SOLUSDT 永續合約上,此邏輯必須手動觸發或編寫腳本,因為本機交易所 UI 不會自動將停...
如何使用幣安期貨計算器進行 ETHUSDT 交易
2026-10-21 02:00:11
了解幣安期貨計算器介面1. 此計算器直接嵌入幣安合約交易介面中,可透過訂單輸入面板下的 ETHUSDT 永續合約頁面存取。 2. 隨著使用者調整輸入欄位(包括倉位大小、入場價格、槓桿水平以及止盈或停損水平),它會動態更新。 3. 接受多種格式的輸入值:合約數量(ETH)、名目價值(USDT)或保證金...
合約強平前如何查看BTCUSDT標記價格
2026-10-26 12:20:18
了解BTCUSDT期貨的標記價格1. 標記價格是交易所為防止市場波動期間出現不公平清算而使用的計算值。 2.反映了來自多個來源的公平、穩定的參考價格,包括指數價格和資金費率。 3. 與最新成交價不同,標記價格包含頂級現貨交易所的時間加權平均值,以降低操縱風險。 4. 在幣安上,BTCUSDT標記價格...
如何調整 TRUMPUSDT 永續合約的槓桿
2026-10-30 22:19:37
了解 TRUMPUSDT 永續合約機制1. TRUMPUSDT 是在多個一級衍生品交易所上市的主題永續期貨合約,旨在追蹤圍繞美國政治敘事而非基礎資產基本面的價格情緒。 2.依平台不同,採用標準的反向或線性結算邏輯,以USDT作為報價和保證金資產。 3. 合約使用的標記價格源自現貨 BTC/USDT、...
看所有文章














