僅供教育參考,不構成投資建議;投資可能產生損失。
直接答案
治理攻擊是指攻擊者取得足夠的投票、提案、取消或執行權,使協議透過自身授權的治理路徑執行有害操作。相關呼叫可能通過智慧合約的每一項檢查。真正的失敗在於,治理系統讓控制權的取得成本、速度或問責程度與其支配的價值不相匹配。
投票權可能來自自有代幣、受委託票數、借入代幣、投票賄賂、遭竊密鑰,或治理合約與時間鎖中的特權角色。歷史投票檢查點可以阻止同一餘額在轉帳後重複投票,也能抵禦快照之後才發生的借票行為;但它無法阻止快照前取得的票數、委託權集中、薄弱的法定人數規則或執行者失陷。
並非每項不受歡迎的提案都是攻擊,治理本來就是用來改變規則的。安全判斷應關注:某個參與者是否取得了不成比例或臨時性的控制權,是否隱瞞或歪曲了可執行效果,或是否越過公開聲明的權限邊界。審查時要看實際呼叫、取得決定性權力的最低成本路徑、可用的回應時間,以及執行後能夠觸及的最大價值或控制範圍。
運作方式
- 從投票資產出發,經委託與檢查點追蹤至治理合約、時間鎖、代理管理員、資金庫、緊急角色和最終目標合約。治理介面並不等於權限圖。
- 固定鏈、合約位址、實作版本、時鐘模式、快照、提案門檻、法定人數計算、計票規則、投票延遲、投票期、排隊延遲、到期條件、取消權限和執行角色。
- 使用
getPastVotes等歷史讀取,在精確的快照時點重建投票權。把受同一主體控制或協調的位址歸組,並區分代幣餘額與獲委託的投票權重。 - 解碼每一項提案操作:
targets、values、calldatas和descriptionHash。解析代理與函式選擇器,檢查批次呼叫,並把可執行載荷與人類可讀的說明逐項對照。 - 在分叉環境中重現提案建立、投票、排隊和執行。對比執行前後的餘額、所有權、角色、授權額度、實作合約、預言機設定、抵押參數以及任何新開放的可呼叫函式。
- 估算所有控制路徑中的最低成本,包括現貨買入、借貸市場、閃電流動性、場外借幣、委託、投票激勵、衍生品避險、密鑰失陷和特權角色遭奪取。計入手續費、滑價、抵押品、平倉損失及資本必須鎖定的時間。
- 測試回應路徑。確認誰能取消或暫停、需要何種證據、能否在延遲期內完成操作、使用者從何處取得權威公告,以及治理如何在不遺留無限緊急權限的前提下恢復。
典型的代幣治理流程會依序經歷提案、延遲、快照、投票、通過或否決、排隊、時間鎖和執行,但具體規則取決於實作。採用 ERC-5805 式檢查點時,可以查詢過去某個時點的委託投票權;時鐘既可能使用區塊高度,也可能使用時間戳記。審查者必須採用已部署合約的時鐘與設定,不能把介面顯示的時長或代幣餘額當作權威依據。
時間鎖只提供最短公告窗口,不會判斷意圖,也不會讓載荷自動變得安全。其提案者、執行者、取消者和管理員角色本身都是關鍵權限。若外部管理員能夠繞過延遲,時間鎖就不是最終權力層;若無人能夠取消已排隊的惡意操作,僅僅發現問題也無法阻止執行。
計算範例
- 低參與率下的控制。 某協議共有
100 million枚代幣,其中40 million枚流通。提案需要2 million張參與票、贊成票多於反對票,並經過6-hour時間鎖。某主體買入1.2 million票,又獲得1 million張委託票。反對票共0.8 million,因此其2.2 million張贊成票足以通過一項可從資金庫轉出15 million USDC的呼叫。該主體只控制總供應量的2.2 / 100 = 2.2%、流通量的2.2 / 40 = 5.5%,卻占已投票數的2.2 / 3.0 = 73.3%。決定安全性的是真實參與率、委託、法定人數、載荷權限和延遲,而不是一句51%。 - 快照邊界。 如果投票權按目前餘額讀取且可立即執行,同一筆交易就能借入代幣、投票、執行並歸還。改為讀取投票開始前某個時點不可變的歷史投票權,可以阻斷這條單筆交易路徑。但快照前借入或取得委託的資本仍可使用,因此提案延遲和可觀察的票權累積窗口仍是防線的一部分。
- 2022 年四月 17 日的 Beanstalk 事件。 Beanstalk Farms 報告稱,攻擊者利用閃電貸攻擊協議的治理機制,竊取了約
$77 million的非 Beanstalk 使用者資產。該事件說明閃電流動性只是融資工具,決定性缺陷在於治理允許臨時經濟權力觸及高價值執行權限。
風險與控制措施
- 實際權力集中。 衡量委託代表和協同行動主體,而不只是持幣位址。公開最大委託代表占比、參與度分布,以及對基金會、託管機構、造市商和代表的依賴。
- 提案與法定人數規則薄弱。 將門檻與活躍投票權、可借供應量和資金庫曝險比較。日常參數與高影響升級或轉帳應採用不同要求。
- 快照不安全。 使用不可變歷史檢查點,並讓投票代幣與治理合約共享同一時鐘。在快照前保留足夠延遲,使異常累積或委託能夠被觀察到。
- 臨近截止或突襲式投票。 當法定人數在臨近截止時才達到,可考慮設定最短延長期,並在整個提案生命週期監控大額委託變化。
- 載荷不透明。 發布已解碼呼叫和獨立模擬結果。拆分彼此無關的高風險操作,避免正常事項掩蓋管理員變更或資金庫轉帳。
- 執行延遲不足。 按影響程度設定時間鎖,並公開排隊操作。有效延遲必須容納審查、警示、取消或暫停,以及可信的使用者退出路徑。
- 緊急角色權力過大。 按函式、價值、期限和審查標準限定守護者權限。公開成員、門檻、輪換、證據要求以及罷免和恢復流程。
- 升級路徑未審查。 追蹤代理管理員、信標、實作初始化器、可變形部署路徑,以及取得權限後仍可升級的合約。
- 跨鏈執行風險。 驗證來源治理合約與訊息、防止重放、限制目標函式、為高影響呼叫增加本地延遲,並規定橋故障或暫停期間的行為。
- 監控不足。 對提案建立、票權集中、法定人數變化、排隊與取消事件、解碼後的狀態變更、實作升級、角色授予、授權額度和資金庫流出設定警示。
- 事件回應失效。 演練惡意提案、簽署者失聯、前端失陷、跨鏈橋中斷和誤暫停。記錄由誰決策、溝通、簽署、驗證並安全恢復運作。
- 風險價值無上限。 限制單次及滾動資金庫轉帳、升級範圍、鑄幣、抵押品變更和授權額度。不能只因投票通過就自動賦予治理無限權限。
審查結果應形成可重現的控制台帳:逐項記錄特權操作、控制者、所需票數或密鑰、最早執行時間、取消路徑、監控來源和最大可觸及價值。每次升級、代幣分配、委託變化、跨鏈橋遷移,或流動性與參與度發生重大變化後,都要重新計算。
常見誤解
- 「攻擊者必須持有總供應量的 51%。」 多數系統取決於獲委託或實際參與的票數、法定人數和通過規則。取得決定性控制的成本可能遠低於總供應量的一半。
- 「快照能消除治理攻擊。」 快照只能阻止特定形式的重複用票或臨近投票時借票,無法阻止提前借入、買入、委託集中、賄賂或特權密鑰失陷。
- 「鏈上投票通過就證明提案正當。」 它只證明已部署程式碼的條件得到滿足,並不能證明說明與載荷一致,也不能證明結果安全、公平或符合公開承諾。
- 「時間鎖越長越安全。」 只有在延遲期內能完成監控、分析、取消或暫停、溝通與退出時,延遲才有用。過長的延遲也會妨礙緊急維護。
- 「增設安全委員會就能解決治理風險。」 委員會能縮短回應時間,卻也增加了一條控制路徑。其權限、問責、罷免和失效模式必須納入同一威脅模型。
相關主題
資料來源
- Governance - OpenZeppelin Documentation(存取日期:2026-08-20)
- ERC-5805: Voting with delegation - Ethereum Improvement Proposals(存取日期:2026-08-20)
- Compound v2 Governance - Compound Documentation(存取日期:2026-08-20)
- Beanstalk Governance Exploit - Beanstalk Farms(存取日期:2026-08-20)