TronGreen

以太坊開發者生態合約安全

ChainSecurity:Glamsterdam 新 gas 規則可能讓「失敗路徑」變成成功,合約開發者需重測

安全公司 ChainSecurity 於 10 月 13 日發表分析,指 Glamsterdam 的 EIP-8037/EIP-8038 改變 gas 計費與退款,使依賴「子呼叫失敗」與 gasleft() 門檻的合約,即使程式碼不變,也可能走到過去不會出現的狀態。

示意圖:左側為現行規則(Osaka)下子呼叫失敗後 gasleft() 門檻未過而向上 revert、整筆交易回滾;右側為 Glamsterdam 規則下依研究推演,狀態成本被退回使 gasleft() 數值翻轉、門檻通過,失敗路徑可能變成成功
編輯示意圖:依 ChainSecurity 2026 年 10 月 13 日研究的推演情境,以程式原創繪製;並非實測結果或已發生的攻擊。

該文依規格推演,並非已發生的攻擊或實測;以太坊基金會 10 月 22 日已因調查 EIP-8037 與主網合約互動而延後 Hoodi 升級。

重點摘要

ChainSecurity 的結論是情境推演,不是漏洞通報:處理子呼叫失敗、以 gasleft() 設門檻、或批次略過失敗項目的合約,應在新舊 gas 規則下強制子呼叫失敗後比對行為。基金會公告並未說明延期是否與該研究有關,主網尚無日期。

文章目錄

研究說了什麼

ChainSecurity 在 2026 年 10 月 13 日的文章中指出,Glamsterdam 的 EIP-8037(建立狀態成本)與 EIP-8038(狀態存取成本)改變了 gas 的計費與退款方式,因此「捕捉外部呼叫失敗」的合約可能到達先前不可能到達的狀態。文中原話的重點是:即使合約程式碼不變,過去會 revert 的失敗路徑,現在可能完成執行。

文章列出四個機制:一、建立狀態的 gas 來自會被完整轉發的「儲備」,而 GAS 運算碼只回報 gas_left,所以 gasleft() 數值偏小不代表付不起建立狀態的費用;二、清除一個交易開始時為零的儲存槽,可立刻回補執行 gas,可能讓呼叫後的門檻檢查翻轉;三、中介合約在巢狀 gas 不足失敗後再 revert 時,其建立狀態的費用會退回,gas 可能回到呼叫者;四、重新定價本身可能讓原本足夠的轉發預算變得不夠。

受影響的寫法包括:記錄失敗子呼叫後繼續執行、批次處理時略過失敗項目、依 gasReq/63 或 gasInitial/64 之類呼叫後 gasleft() 門檻做分支,以及靠「gas 不足導致 revert」來阻止重試的失敗處理。建議作法包括:盡可能讓失敗向上傳遞使整筆交易 revert;需要處理失敗時保留可恢復路徑,不要只憑剩餘 gas 做不可逆決定;在兩套 gas 規則下重算續行成本;並以強制子呼叫失敗的測試,在相同前置狀態與 gas 假設下比較 Osaka 與 Glamsterdam 的結果。

與官方延期的關係,以及這篇研究的限制

以太坊基金會 10 月 22 日公告,原訂 10 月 26 日在 Hoodi 測試網啟用的 Glamsterdam 已延期,理由是核心開發者在 ACDE #248 決定進一步調查 EIP-8037 與主網智慧合約的互動;公告未設新日期,也沒有主網日期,並說主網使用者與 ETH 持有人無需行動。公告沒有點名 ChainSecurity 的研究,也沒有說明調查發現了什麼。

Bankless 於 10 月 23 日報導把延期與 ChainSecurity 的研究連在一起,並稱該公司已找到 13 個真實案例並聯繫受影響專案;但本站讀取的 ChainSecurity 文章本身沒有列出這個數字,13 個案例的說法目前只見於媒體轉述,未能獨立核實。研究本身依 2026 年 10 月 13 日審閱的 EIP 規格撰寫,當時 EIP 為 Last Call 狀態,細節仍可能更動;文章給的是示意情境與規格中的 gas 數字,不是實際攻擊或鏈上實測。

AI 觀點分析與推論

AI 觀點:風險在「沒改程式碼卻改了行為」

我傾向認為,這類問題的難處不在單一漏洞,而在不可升級的舊合約:開發者無法修補,只能由新規則的設計者決定是否調整定價或加入緩解。若研究的推演成立,受影響最大的會是用「呼叫後 gasleft() 門檻」或「batch 略過失敗」寫法的協議與其使用者,而一般只做轉帳或簡單交換的使用者較不容易碰到。

反面情境是:實際主網上符合危險寫法的合約很少,或開發者透過調整規格即可消除差異,那麼這次研究更像一次有價值的提前演練。我會看三個訊號來修正判斷:基金會或 ACDE 是否公開說明調查結果、EIP-8037/8038 是否因此修改、以及 ChainSecurity 是否公布可核對的受影響案例。這是推論,並非已確認的主網風險。

原始來源與延伸閱讀

  1. ChainSecurity:Glamsterdam Hard Fork: When Spent Gas Comes Back ↗第三方安全研究 · 原始發布 2026-10-13 · 查閱 2026-11-02
  2. Ethereum Foundation Blog:Glamsterdam on Hoodi Postponed ↗官方公告 · 原始發布 2026-10-22 · 查閱 2026-11-02
  3. Bankless:Ethereum Devs Postpone Glamsterdam on Hoodi Over Contract Security Risks ↗媒體報導(僅作轉述參考) · 原始發布 2026-10-23 · 查閱 2026-11-02
  4. EIP-8037 規格 ↗原始規格 · 查閱 2026-11-02
  5. EIP-8038 規格 ↗原始規格 · 查閱 2026-11-02

更正與更新

本文發布後沒有更新。之後若有修改,會建立新版本並在這裡標示更新時間。

內容有誤?請見更正方式,或寄信至 [email protected](請附文章網址、段落與參考資料)。

延伸閱讀

更多 ETH 新聞