帖子
avatar

重入漏洞解密 —— 2026 年仍持續盜取數百萬美元的智能合約漏洞,以及能於代碼中阻止它的「檢查-影響-交互」模式 重入並非魔法,而是一種順序錯誤:你的合約在進行外部呼叫之後才更新自身狀態,而非在此之前,攻擊者便會在該間隙中回調。修正順序,漏洞即消失。 2016 年 6 月 17 日,The DAO 因此錯誤損失約 3.6M 以太坊(約 6000 萬美元,當時約佔所有流通以太坊的 5%),導致以太坊分叉為 ETH 和 ETC。 十年過後,此漏洞仍持續盜取資金。2026 年 3 月 5 日,Solv Protocol 因重入損失 273 萬美元;2026 年 5 月,鏈上協議共被盜約 5200 萬美元(資料來源:DeFiLlama via CryptoTimes,2026 年 5 月 31 日)。 易受攻擊的模式:讀取餘額、透過低階呼叫發送 ETH,然後才將餘額設為零。攻擊者的 receive() 函數在零值寫入前便重新進入 withdraw(),並迴圈執行直至合約資金耗盡。 兩種需同時使用的修復方式: 「檢查-影響-交互」(Checks-Effects-Interactions):先驗證,再更新所有狀態,最後進行外部呼叫。將 balances[msg.sender] = 0 移至呼叫之前,重入呼叫將讀取到零並回退。 OpenZeppelin 的 nonReentrant 防護:使用儲存互斥鎖(NOT_ENTERED 至 ENTERED),於重入時回退。請同時使用此方法與 CEI,而非僅選其一。 大多數開發者仍常犯的兩個錯誤: 1. .transfer() 不再是防護盾:自 2019 年 EIP-1884 提高 SLOAD 氣體成本後,2300 氣體補貼已不再安全。請改用 .call{value:}("") 並搭配 CEI。 2. 只讀重入可繞過標準防護,因為在更新中途讀取的 view 函數會返回錯誤狀態,可能污染價格預言機(dForce,損失 364 萬美元)。 僅供教育用途,非財務建議。 關注我們,每日獲取洞見——區塊鏈與 AI 的交會,一次令人滿意的滑動。 #Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation

此內容僅供資訊及教育用途。內容可能包括第三方見解、贊助內容或推廣材料,而創作者可能因此獲得報酬。本資訊流中的任何內容均不構成投資建議或收益保證。您須自行對投資決策負全責。交易前,請務必自行研究並審慎行事。我們不保證第三方資訊的準確性,亦不會對因此產生的任何損失承擔責任。過往表現並不代表未來結果。詳情請參閱我們的 社群條款 及 風險披露聲明。

avatar發佈你的回覆

評論