跳至主要內容
一個充滿未來感的視覺化圖像,顯示相互連接的區塊鏈節點和安全元素,代表數位資產領域中價值兆元的安全性

兆元級安全專案

安全挑戰概述

以太坊是最安全、最具韌性且最受信任的區塊鏈生態系。在過去 10 年中,以太坊生態系發展了技術、標準和知識,如今支撐著一個被數百萬人使用、容納超過 6,000 億美元資金的生態系。

但為了讓以太坊在下一階段的全球採用中取得成功,仍有許多必須改進的地方。為了實現我們社群的抱負,以太坊必須成長為一個具備以下條件的生態系:

  • 數十億人都能安心地在鏈上持有超過 1,000 美元,總計在以太坊上保障數兆美元的安全。
  • 企業、機構和政府都能安心地在單一合約或應用程式中儲存超過 1 兆美元的價值,並能安心地進行同等金額的交易。

兆元級安全 (1TS) (opens in a new tab) 專案是整個生態系為升級以太坊安全而共同努力的成果。本報告是 1TS 專案的首份交付成果。在過去一個月裡,我們收集了使用者、開發者、安全專家和機構的意見回饋,了解他們認為最大的挑戰和需要改進的領域。感謝數百位人士和數十個組織撥冗與我們分享您的見解。

本報告總結了我們的發現,涵蓋 6 個不同的領域:

  1. 使用者體驗 (UX)

    影響使用者安全管理私鑰、與鏈上應用程式互動以及簽署交易能力的問題。

  2. 智能合約安全

    以太坊應用程式中智能合約元件的安全性,以及塑造它們的軟體開發生命週期。

  3. 基礎設施與雲端安全

    以太坊應用程式所依賴的基礎設施(包括加密貨幣專用和傳統基礎設施)問題,例如第二層 (L2) 鏈、RPC、雲端代管服務等。

  4. 共識協定

    核心協定的安全屬性,保護以太坊區塊鏈本身免受攻擊或操縱。

  5. 監控、事件回應與緩解

    使用者和組織在應對安全漏洞時面臨的挑戰,特別是在收回資金或管理善後工作方面。

  6. 社會層與治理

    以太坊的開源治理、社群和組織生態系。

這份首發報告的重點在於識別和描繪仍然存在的問題與挑戰。下一步將是選擇最優先的問題、找出解決方案,並與生態系合作解決這些問題。

由於以太坊生態系是去中心化的,保障以太坊的安全並非單一實體所能完成。以太坊的技術堆疊由世界各地獨立的組織建立和維護,範圍涵蓋錢包、基礎設施到開發者工具。雖然 1TS 專案由以太坊基金會協調,但我們需要您的幫助來保障以太坊的安全。

您可以透過分享您的意見回饋和想法,為 1TS 安全專案做出貢獻:

  • 您是否發現本報告未包含的以太坊安全問題?
  • 您認為以下調查的問題中,哪些是最優先的?
  • 對於如何解決這些問題,您有什麼想法或解決方案?

我們非常期待收到您的來信,請聯絡 trilliondollarsecurity@ethereum.org

1. 使用者體驗 (UX)

安全始於人們用來與以太坊互動的介面。這個使用者與區塊鏈本身之間的邊界,一直是安全挑戰的來源。

區塊鏈的一個決定性特徵是交易的原子性:一旦更新記錄到區塊鏈中,就沒有干預或撤銷的機會。這提供了強大的一致性和協定層級的安全保證,但也讓使用者面臨更高的操作風險:一個錯誤、金鑰外洩或倉促的授權,都可能導致不可逆轉的損失。

因此,很大一部分的安全責任落在使用者身上。為了安全地使用以太坊,個人和組織必須安全地持有和管理金鑰、與鏈上應用程式互動,並使用他們的金鑰簽署交易以轉帳資產或以其他方式更新以太坊的狀態。

這些要求中的每一項都會帶來風險,例如金鑰外洩或遺失、倉促或不知情的授權,或是使用者賴以獲取資訊並引導其與以太坊互動的錢包軟體遭到入侵。

1.1 金鑰管理

許多使用者不具備安全管理密碼學金鑰的能力。

大多數廣泛使用的軟體錢包依賴使用者安全地儲存代表其底層密碼學私鑰的助記詞,這通常會導致他們使用不安全的變通方法,例如將助記詞以純文字形式儲存、存放在雲端服務上,或寫在紙上。

硬體錢包是一種替代方案,它讓使用者能夠管理儲存在專用實體裝置中的密碼學金鑰。然而,硬體錢包也有其自身的缺陷和攻擊面。硬體錢包可能會遺失、損壞或被盜。許多硬體錢包不是開源的,且可能具有不透明的供應鏈,這增加了供應鏈攻擊的風險,即受感染的裝置被銷售到市場上。

無論金鑰是在軟體錢包還是硬體錢包中管理,當自我託管可能因實體盜竊或攻擊而受到威脅時,許多使用者對此感到緊張是可以理解的。

企業和機構使用者在金鑰管理方面面臨額外的挑戰。如果個別員工持有金鑰(例如,作為多方簽名錢包的一部分),組織必須能夠在人員變動時替換他們並建立新的金鑰。不同產業和司法管轄區的合規要求可能需要現有錢包軟體不支援的自訂工作流程或稽核軌跡。在某些情況下,企業使用者會轉向第三方數位資產託管機構,這可能會引入另一層需要考慮的安全風險。

1.2 盲簽與交易不確定性

使用者經常在不了解自己在做什麼的情況下「盲目」授權交易。錢包通常會呈現原始的十六進位資料、截斷的合約地址或其他不足以讓使用者了解特定交易後果的資訊。這使得各種類型的使用者都容易受到惡意智能合約、網路釣魚、詐騙、偽造介面、前端入侵和基本使用者錯誤的影響。

1.3 授權與權限管理

在許多以太坊應用程式中,使用者在正常使用過程中授予底層應用程式某些權限是很常見的。例如,使用者可能會授予像尤尼斯瓦普 (Uniswap) 這樣的去中心化交易所移動其代幣的權限,以便將其兌換為 ETH。

這些授權可以有金額限制,但許多錢包預設授予無到期日的無限制授權。使用者無法在大多數錢包內管理或審查其未完成的授權。

這可能會讓使用者暴露於惡意應用程式或受感染的前端,因為許多使用者的預設模式是授予無限制的授權,這可能被用來耗盡他們的資金。即使使用者向合法的智能合約授予授權,如果該合約後來在授權仍然有效的情況下遭到入侵,那麼受感染的合約也可能耗盡使用者的資金。

這對組織使用者來說同樣是一種風險。例如,為了操作上的便利,組織可能會選擇授予 DEX 路由器無限制的 USDC 授權額度,如果路由器合約升級,這將使他們面臨風險。

1.4 受感染的網頁介面

大多數使用者不會直接與智能合約互動,而是透過行動裝置或網頁瀏覽器上的網頁介面進行互動。

這些前端可能會透過常見的手段受到攻擊,例如 DNS 劫持、惡意 JavaScript 注入、不安全的代管或各種第三方依賴項。受感染的應用程式使用者體驗可能會將各種類型的使用者重新導向至惡意智能合約,或引導他們簽署具誤導性的交易。

1.5 隱私

隱私可以減輕或放大各種類型使用者的安全風險。

較弱的隱私保護會讓個人使用者面臨各種針對性威脅,例如網路釣魚、漏洞利用、詐騙或實體攻擊。許多常見的使用者體驗模式會暴露使用者資訊,例如地址重複使用、KYC 資料和其他中繼資料外洩。

對於機構和企業而言,基於合規原因或特定使用案例,隱私通常是一項基本的業務要求。除了這些問題之外,它還可能造成特定安全風險的暴露。例如,建立在以太坊上的供應鏈系統使用者可能需要強大的隱私保證,以保護在系統透明的情況下可能受到損害的智慧財產權資產。

1.6 碎片化

不同錢包在處理顯示交易、處理授權或標記合約等核心行為方面缺乏一致性。這種使用者體驗的碎片化增加了使用者學習如何安全使用錢包的阻力,並增加了風險。

例如,使用者無法依賴一致的使用者體驗提示來保護自己免受網路釣魚和欺騙,因為這些提示在不同錢包中有所不同。如果每個工具的運作方式都不同,使用者就無法對以太坊的運作方式形成可靠的預期。

2. 智能合約安全

智能合約是以太坊應用程式的鏈上元件:持有資金、定義存取控制並執行應用程式業務邏輯的程式碼。由於智能合約通常是透明的且任何人都可以存取,因此在考慮以太坊生態系的安全時,它們是一個關鍵的攻擊面。

在以太坊的歷史中,智能合約的安全性有了根本性的改善。像 DAO 駭客攻擊這樣的早期安全事件,促使生態系在導致程式碼部署到鏈上的軟體生命週期中,專業化並改善了安全防護措施。關鍵的進展包括:

  • 安全稽核成為標準做法,幾家安全公司進入生態系並發展了專業知識。
  • 工具、測試和靜態分析系統已經成熟並成為標準做法。
  • 經過預先稽核的通用元件函式庫為開發者提供了預設安全的建構區塊。
  • 採用了形式化驗證技術,特別是用於跨鏈橋、質押系統和高價值合約。
  • 生態系的安全文化和最佳實踐得到了改善。
  • 建立了重要的漏洞賞金計畫,強化了應用層。

然而,在這個領域仍然存在弱點和需要改進的地方。

2.1 合約漏洞

儘管智能合約安全取得了進展,但仍然存在可能導致重大安全問題的漏洞,包括:

  • 合約升級風險. 某些合約被設計為在部署後可修改,以使開發團隊能夠繼續更新和改進應用程式。然而,這帶來了風險。升級可能會導致新的漏洞,或者在惡意升級的情況下導致使用者資金完全損失。
  • 重入攻擊, 合約 A 在更新其自身內部狀態之前呼叫外部合約 B,而合約 B 在第一次呼叫完成之前回呼原始合約 A。
  • 不安全地使用外部函式庫, 合約呼叫可能未經稽核、具惡意或可升級的外部函式庫。
  • 未經稽核的元件. 雖然稽核和標準函式庫的使用有所改善,但開發者有時仍會在他們的應用程式中依賴未經稽核的元件。
  • 存取控制失敗, 權限設定錯誤或定義過於寬鬆,允許攻擊者採取惡意行動。
  • 未經授權的存取, 能夠控制合約的私鑰被惡意行為者取得。
  • 跨鏈橋與跨鏈互動. 跨鏈橋和跨鏈協定引入了額外的複雜性,攻擊者可以利用跨鏈訊息傳遞或驗證方式中的弱點。
  • 外部擁有帳戶 (EOA) 委託或簽章濫用. 惡意應用程式可能會欺騙使用者簽署將其帳戶的完全委託權交給另一方,從而實現盜竊。惡意應用程式也可以以意想不到的方式使用來自使用者的已簽署訊息,例如在重放攻擊中。
  • 由 AI 程式碼生成或自動化重構工具引入錯誤的新興風險.

2.2 開發者體驗、工具與程式語言

由於開發者的錯誤,漏洞最終會出現在已部署的程式碼中。改進的開發者工具使得部署安全的智能合約變得容易許多。然而,問題依然存在。

  • 流行框架中缺乏安全預設值. 某些工具將靈活性或速度置於安全性之上,設定了不安全的預設值,例如在 approve() 函式中無限制的代幣授權,或者預設未包含存取控制模式。
  • 用於進階操作控制的自訂程式碼. 具有複雜操作要求的機構使用者通常必須從頭開始建構所需的功能,這增加了出現漏洞的風險。對於進階安全工作流程,缺乏標準化的安全元件或框架。
  • 測試覆蓋率不一致 在各個工具堆疊中,以及缺乏使用模糊測試 (fuzzing) 或不變數檢查 (invariant checking) 等成熟技術的規範。
  • 形式化驗證方法的採用率低. 形式化驗證技術非常強大,但它們複雜、昂貴、需要專門的領域專業知識,而且沒有很好地整合到標準的開發者工作流程中,否則它們可以在軟體生產的更早階段使用,以在規格階段驗證安全性。
  • 與合約驗證相關的問題. 使用者和開發者無法輕易評估已部署合約的可信度、其安全驗證的程度(例如程式碼稽核)或潛在風險的存在。雖然存在用於此目的的解決方案,但仍有許多問題。解決這些問題的工具並未被廣泛採用,統一這些方法的標準仍然碎片化,而且一些現有服務本身就是中心化的依賴項。
  • 編譯器風險. 編譯器(將人類可讀的程式碼(如 Solidity)轉換為 EVM 本身使用的位元組碼的軟體)可能存在缺陷,從而在智能合約部署之前引入錯誤。如今的以太坊生態系統主要依賴 solc 編譯器,這意味著一個錯誤可能會產生廣泛的影響。
  • 程式語言的多樣性與深度. 雖然 Solidity 建立了一個深度的工具生態系統,但一些開發人員希望獲得其他程式語言中更現代的安全功能,例如記憶體安全。

2.3 鏈上程式碼的風險評估

機構和企業擁有現有的流程、標準和要求,用於評估其所依賴的技術和系統的安全性。然而,現有的框架通常無法完全對應到智能合約上,因為它們通常假設程式碼是可變的、具有中心化的變更控制,以及明確的問責制或法律責任界線。建立在智能合約上的系統有時可能會打破這些假設,使得組織難以採用以太坊並適當地管理風險。

3. 基礎設施與雲端安全

以太坊的許多應用依賴於各種基礎設施提供商,包括加密貨幣專用的基礎設施(例如第二層 (L2) 鏈、RPC 提供商)以及傳統的雲端和網際網路基礎設施(例如 AWS、CDN、DNS)。

這些系統既是錢包和應用程式層(例如錢包的 RPC 端點)的攻擊面,也是以太坊協定本身的攻擊面(例如,許多驗證者託管在雲端基礎設施上)。即使底層的區塊鏈協定保持安全,私鑰外洩、網路釣魚和缺乏細緻的存取控制也可能導致大規模的服務中斷、資金遭竊或未經授權的變更。

3.1 第二層 (L2) 鏈

第二層 (L2) 鏈作為以太坊的擴展,能夠提供更快、手續費更低的環境,同時保留以太坊主網的一些特有安全保證(取決於其具體設計)。然而,它們也有自己獨特的攻擊面,包括:

  • 多跳橋接資產的複雜性. 當資產在第一層 (L1) 和多個第二層 (L2) 之間轉移時,它們會暴露在多組合約中,而這些合約都必須是安全的。第二層 (L2) 鏈中的帳務不符或服務中斷可能會引入可被攻擊者利用的漏洞。
  • 匯總 (Rollup) 第二層 (L2) 依賴證明系統來強制執行狀態更新的正確性. 這些系統中的錯誤或錯誤配置可能會拖延或阻止最終確定,或者允許錯誤狀態更新的最終確定,從而導致使用者資金損失。
  • 安全委員會是由金鑰持有者組成的團體,作為升級第二層 (L2) 軟體或應對某些緊急情況的「備用」機制. 安全委員會本身也構成風險,因為成員之間的妥協或共謀可能會使使用者資金面臨風險或凍結資產。

請參閱 L2BEAT (opens in a new tab) 以獲取評估和比較第二層 (L2) 效能與安全性的詳細框架和監控儀表板。

3.2 RPC 與節點基礎設施

以太坊應用程式依賴少數基礎設施提供商來獲取 RPC 存取、API 和節點服務。這包括加密貨幣專用的基礎設施提供商,以及通常用於託管節點的傳統雲端服務(例如 AWS、Cloudflare、Hetzner)。

如果這些基礎設施提供商離線或試圖審查或限制存取,許多使用者可能會被阻止透過其錢包或應用程式存取以太坊,直到他們能夠遷移到新的 RPC 或其他基礎設施提供商。其中一些提供商以前曾暫停或關閉與區塊鏈活動相關的帳戶,引發了人們對其在去中心化應用程式中長期可靠性的擔憂。

3.3 DNS 層級的漏洞

網域名稱系統 (DNS) 是網際網路的基礎層,但它也是中心化的,並且可能遭到破壞。許多使用者透過網域存取應用程式,這些網域容易受到以下影響:

  • DNS 劫持,攻擊者會插入惡意的虛假前端。
  • 網域扣押,政府或註冊商可以扣押網域。
  • 透過相似網域進行網路釣魚,攻擊者註冊幾乎相同的名稱來混淆使用者。

3.4 軟體供應鏈與函式庫

以太坊開發人員依賴開源函式庫,通常直接從 npm、crates.io 或 GitHub 等服務中提取。如果這些函式庫遭到破壞,它們可能成為以下攻擊的媒介:

  • 惡意套件注入, 攻擊者破壞廣泛使用的套件或以相似名稱發布套件
  • 被劫持的依賴項, 維護者失去對專案的控制權,惡意行為者引入有害的程式碼
  • 開發人員遭入侵, 安裝的套件包含讓攻擊者控制開發人員電腦的程式碼。

3.5 前端交付服務與相關風險

許多以太坊應用程式透過內容傳遞網路 (CDN) 或基於雲端的託管平台(例如 Vercel、Netlify、Cloudflare)提供其前端。如果這些服務遭到破壞,它們可能成為惡意 JavaScript 注入等攻擊的媒介,攻擊者會向使用者提供被竄改的前端。

3.6 網際網路服務供應商層級的審查

網際網路服務供應商 (ISP) 或民族國家可以利用對底層網際網路基礎設施的控制來審查對以太坊的存取。例如,這些攻擊可能包括:

  • 封鎖或限制通往常見以太坊連接埠的流量
  • 過濾解析為以太坊相關服務的 DNS 請求
  • 針對已知以太坊節點的地理圍欄或 IP 封禁
  • 深度封包檢測以識別和審查與以太坊協定相關的流量

當今世界各地的獨裁政府已經在使用許多這些基本技術來壓制對資訊、抗議工具或加密貨幣的存取。

4. 共識協定

以太坊的共識協定定義了網路如何更新以太坊區塊鏈的狀態並達成共識。該協定是以太坊成為貨幣、金融、身分、治理、真實世界資產等值得信賴的平台的基礎。

以太坊的共識協定在實踐中已被證明是穩健的,自 2015 年首次推出並經歷多次升級以來,實現了零停機時間。然而,為了使系統更具彈性和安全性,仍有需要長期改進的領域。

4.1 共識脆弱性與恢復風險

以太坊的分叉選擇和最終性規則具有彈性,但並非無懈可擊。在某些極端情況下(例如長期的驗證者分歧、客戶端錯誤或網路分割),共識可能會停滯或暫時分歧。在極端條件下,這可能會透過不活躍懲罰 (inactivity leaks) 或罰沒導致連鎖的驗證者懲罰,進而導致驗證者的資金外流。

4.2 客戶端多樣性

以太坊領先業界的客戶端多樣性保護了網路免受任何單一客戶端錯誤的影響。然而,透過更多地採用少數客戶端,客戶端多樣性仍有改進的空間,從而進一步降低這些風險。

4.3 質押中心化與礦池主導地位

大量的驗證者權重集中在流動性質押協定、託管服務和大型節點營運商中。這種集中化可能會導致以下風險:

  • 治理捕獲或影響。如果控制大量質押的實體(或具有法律權力影響這些實體的實體)協調一致,它們可能會對提議和證明哪些區塊產生過大的影響,從而可能審查使用者或影響協定升級。
  • 客戶端選擇和基礎設施設定的同質性,這會增加相關的故障風險。

4.4 未定義的社會性罰沒與協調差距

在某些極端的故障模式下,以太坊將依賴「社會性罰沒」來懲罰惡意攻擊網路的驗證者(請參閱第 6.1 節)。然而,這種罰沒的基礎設施、規範和預期流程尚不完善。社群沒有既定的機制來參與這個過程。

4.5 經濟與賽局理論攻擊向量

許多潛在的經濟攻擊向量仍未得到充分研究,包括:

  • 惡意破壞攻擊 (Griefing attacks) 或罰沒惡意破壞。驗證者可能會產生費用或面臨罰沒懲罰,這並非由於他們自己的過失,而是因為對手純粹為了傷害他人而進行的敵對行為,即使攻擊者本身也會付出淨成本。
  • 策略性退出或定時不活躍。驗證者可能會在關鍵時刻故意離線或退出,以最大化利潤或以最小的懲罰破壞共識。
  • 驗證者或中繼器之間的共謀。驗證者之間或中繼器與驗證者之間的協調行為可能會降低去中心化程度,或提取 MEV。
  • 利用 MEV、提案者與建構者分離或流動性質押設計中的邊緣情況激勵措施。參與者可能會操縱罕見的協定條件以獲得超額獎勵。

4.6 量子風險

以太坊的核心密碼學(例如 secp256k1 等橢圓曲線簽章)有朝一日可能會被量子電腦破解。雖然這不是迫在眉睫的風險,但可信的威脅可能會立即讓現有的錢包、合約和質押金鑰變得脆弱。這個未來的挑戰削弱了以太坊對使用者的長期保證。

向抗量子密碼學的遷移路徑(例如,透過後量子簽章方案)需要在需要它們的幾年前進行設計、測試,並可能嵌入到協定中。整個以太坊生態系統的組織,包括以太坊基金會,都在積極探索這些選項並監控風險。

5. 監控、事件回應與緩解

即使是理想化的區塊鏈生態系統也會有風險、攻擊和漏洞。當出現問題時,必須有有效的系統來減輕、檢測和應對。這裡的挑戰包括:

  • 聯繫受影響的團隊. 要聯繫應用程式遭到破壞的團隊可能很困難。這可能會導致數小時的延遲,限制了應變人員追回資金的能力。
  • 在相關組織中升級問題. 當問題涉及平台(如社群網路或中心化交易所)時,如果應變人員沒有預先存在的聯絡人,他們要升級問題可能會面臨挑戰。
  • 應變協調. 通常不清楚有多少事件應變團隊正在協助受影響的應用程式,這會導致溝通不良或浪費精力,而團隊合作本來可能會更有效。
  • 缺乏監控能力. 監控鏈上和鏈下問題可能很困難,而這些監控本可以提供預警並確保對威脅做出迅速反應。
  • 獲得保險. 在大多數處理金錢、金融系統、身分和其他有價值資訊的傳統系統中,保險是減輕損失的重要工具。然而,如今傳統金融服務為加密貨幣生態系統提供的保險選擇寥寥無幾。

6. 社會層與治理

以太坊的「社會層」是指影響以太坊生態系統行為的一群人、組織、公司、治理流程和文化規範。這個社會層本身也容易受到某些攻擊或風險的影響,進而影響以太坊的安全性和可靠性。

這些風險往往更偏向長期,並且關係到整個以太坊,而不是個別使用者或應用程式的安全性。

6.1 質押中心化

如果控制大量質押的實體決定共謀,質押的中心化可能會對整個以太坊構成風險。
這種經濟中心化創造了社會治理被捕獲的潛在可能。如果一小群驗證者控制了絕對多數的質押,他們可能會:

  • 協調或抵制分叉。
  • 審查某些交易或合約。
  • 透過威脅退出或反對來破壞社群共識。

如果發生這種極端情況,以太坊社群建議「社會性罰沒」可能是解決方案。社會性罰沒是利用鏈下社會共識來決定罰沒行為不當的驗證者,作為對其權力的制衡。但是,目前還沒有明確的規範、程序或工具來實施此類措施(請參閱第 4.4 節)。

6.2 鏈下資產中心化

以太坊託管了大量的真實世界資產,這些資產在鏈下保存在銀行帳戶或其他存款中,然後透過代表對鏈下資產申領權的代幣在鏈上進行交易。例如,許多大型穩定幣就是以這種方式運作的。

持有鏈下存款的機構可能會對以太坊生態系統產生影響。例如,在發生有爭議的分叉或網路升級的極端情況下,大型存款人可以透過僅選擇承認其中一條鏈上的代幣,來影響哪條鏈被廣泛接受。

6.3 監管攻擊或壓力

政府和監管機構可能會向控制以太坊技術堆疊重要元件的各個實體施壓,要求其審查或以其他方式干擾以太坊協定。以太坊的機構使用者也可能受到這些壓力的影響,這將對其使用者產生進一步的後果(例如,銀行因監管禁令而無法再提供某些加密貨幣產品)。

6.4 組織對治理的捕獲

以太坊的開源治理和開發流程是由維護核心客戶端軟體、基礎設施和工具的多元化全球團隊和公司所推動的。

各種形式的影響(企業收購、資金依賴、關鍵貢獻者的僱傭、現有組織內部的利益衝突)可能會逐漸改變以太坊治理的文化和優先事項。這可能會導致與偏離社群驅動精神和既定路線圖的特定商業或外部利益保持一致,隨著時間的推移,可能會削弱以太坊的中立性和彈性。