剛剛過去的 6 月,加密世界經歷了一輪橫跨多個環節的安全事件。
PeckShield 最新發布的月度安全報告顯示,6 月共發生 40 起重大駭客攻擊事件,總損失高達 7587 萬美元。更值得警惕的是,這些攻擊並沒有集中在某一種攻擊路徑上,反而涵蓋了錢包簽名實作缺陷、L2 協議漏洞、第三方服務供應鏈攻擊,多條防線在同一個月份內接連失守。
當 Web3 安全風險從單一入口擴展到整條鏈上互動路徑,每一位使用者都不得不重新思考一個問題:我的 Crypto 資產,究竟還安全嗎?
一、私鑰之外,錢包底層簽名實作的重要性
6 月發生在 Cardano 生態錢包 SecondFi 上的安全事件,就是最直觀的例子。
SecondFi 的前身是 Cardano 生態錢包 Yoroi。6 月 21 日至 23 日,攻擊者從部分 SecondFi 使用者地址中轉走約 1600 萬枚 ADA,涉及約 374 個錢包,按照事發時價格計算約為 240 萬美元。SecondFi 隨後表示,透過緊急措施另外保護了約 1.29 億枚可能受到影響的 ADA。
這起事件最特殊的地方在於,受影響使用者並沒有主動把助記詞交給攻擊者,問題出在錢包底層的簽名實作。按照安全機構 BlockSec 的分析,錯誤地從公開交易訊息中推導簽名 nonce,遺漏了標準實作所要求的秘密 nonce prefix。
這就使得每當使用者使用受影響版本的錢包簽署交易時,發布到鏈上的公開簽名資料,都會暴露足以推導地址私鑰的資訊。因此,攻擊者不需要入侵使用者手機,也不需要獲得助記詞,只需要分析公開的鏈上資料,就可能恢復對應地址的簽名私鑰。
從使用者的角度看,錢包仍然在正常運作,畢竟助記詞沒有跳窗外洩,密碼沒有被破解,交易也確實由本人發起,但從密碼學層面看,只要使用者地址透過受影響版本產生過一些有效簽名,公開的交易與簽名資料就可能幫助攻擊者推導出該地址的簽名私鑰。
說到底,錢包安全還要看是否正確生成私鑰、是否嚴格依照密碼學標準完成簽名,以及這些關鍵程式碼能否被外部審查和驗證,這也是核心錢包元件保持開源的重要性所在。
當然,這是特定錢包特定版本的實作缺陷,不是所有自託管錢包的普遍問題。以 imToken 的 TokenCore 為例,其核心程式碼倉庫公開託管在 GitHub,涵蓋金鑰管理、地址派生和交易簽名等底層錢包功能。
雖然開源並不意味著程式碼一定不存在漏洞,更不意味著使用者可以完全放棄警惕,但對於錢包中最敏感的密碼學和簽名元件,開源至少提供了一個重要前提,那就是安全研究人員、開發者和社群可以檢查程式碼、重現問題並持續測試,而不是只能相信一個無法驗證的黑盒。
對普通使用者而言,這類事件也對應著幾條更現實的安全原則。
- 首先,錢包應當始終透過官方網站或官方應用商店下載,並及時更新安全版本;
其次,不宜把所有資產都放在同一個日常互動錢包中,大額長期資產可以使用硬體錢包或獨立冷錢包保存,與經常連接 DApp 的熱錢包隔離。 - 更重要的是,一旦錢包官方確認出現金鑰生成或簽名實作層面的漏洞,僅僅把原來的助記詞匯入另一個錢包,通常並不能解決問題。
因為將同一組助記詞匯入其他錢包後,原來已經暴露的地址和私鑰並不會發生變化。受影響資產需要轉移至一個從未透過漏洞版本簽名的新地址;對普通使用者來說,更穩妥的做法通常是按照官方應急流程重新建立一組全新的錢包和助記詞,再完成資產遷移,而不是自行反覆匯入或操作原有地址。
二、L2 不只是「更便宜的以太坊」,也是一整套複雜的信任鏈
除了錢包,6 月的多起事件還將風險指向了越來越複雜的 L2 系統。
6 月 14 日和 18 日,兩個與 Aztec 相關的舊版 Rollup 部署先後遭到攻擊,合計損失約 435 萬美元。
需要特別說明的是,遭到攻擊的是已經進入遺留狀態的 Aztec Connect 等舊版部署,並不等同於目前 Aztec Network 主網本身遭到攻擊,但兩起事件暴露的問題,對整個 ZK Rollup 領域都頗具警示意義。
在其中一起事件中,攻擊者利用交易數量與實際處理資料之間的不一致,讓系統在證明內部記入了一筆存款,卻繞過了 L1 上對應的餘額扣減流程。
另一起事件則源於零知識證明電路中的約束缺失,系統驗證了一份形式上有效的證明,卻沒有確保該證明使用的私有狀態樹,與以太坊上真正用於結算的公開狀態根完全一致。攻擊者因此可以圍繞一棵偽造的狀態樹生成證明,並從 L1 合約中提取資產。
這類問題很難用傳統的「合約是否存在某一行漏洞程式碼」來概括。畢竟零知識證明可以證明某個計算過程符合既定規則,但前提是規則本身正確且完整。如果開發者忘記約束某個關鍵變數,證明仍然可能在數學上有效,卻證明了一個與真實結算狀態並不一致的結果。
Taiko 隨後發生的安全事件,則暴露了另一種 L2 信任鏈風險。
6 月 22 日,Taiko 基於 SGX 的證明驗證流程遭到利用,造成約 170 萬美元損失。根據 BlockSec 的分析,攻擊者使用了一把曾被提交至公開 GitHub 倉庫的 SGX enclave 簽名私鑰,同時利用鏈上驗證合約未拒絕 DEBUG 模式 Enclave 的缺陷,將惡意證明者註冊為合法實例。
攻擊者隨後偽造 L2 狀態證明,讓以太坊上的合約接受了一項並不存在的 L2 狀態,最終從橋接資金中提取資產。說到底,是因為用於簽署可信執行環境的金鑰被公開,遠端認證規則又沒有完整檢查運行環境屬性,最終使一份「通過認證」的證明失去了原本應有的可信含義。
與此同時,Base 在 6 月 25 日至 26 日連續出現主網區塊生產停滯,Base 在事後復盤中表示,兩次中斷源於同一個區塊建構邏輯缺陷:一筆執行失敗的交易沒有正確清理此前記錄的狀態,導致後續交易被錯誤計算 Gas,並生成了包含無效狀態轉換的區塊。由於其他節點無法接受該區塊,網路最終停止繼續推進。Base 表示,事故期間鏈的完整性沒有受到破壞,使用者資金始終安全。
這並不是一起資產盜竊或外部攻擊,而是一次影響網路可用性和恢復能力的技術故障。但從更廣義的安全角度看,可用性本身也是 L2 安全模型的一部分。
因為對使用者來說,一條鏈是否安全,不只取決於駭客能否偽造資產,還取決於區塊能否持續生產,跨鏈橋能否正常運作,節點能否快速恢復,以及系統出現故障時,使用者是否仍然擁有可行的退出路徑。
所以使用者在使用 L2 時,也不應只比較手續費和空投預期。對於規模較小、剛剛上線或安全機制仍在快速變化的 L2,盡量避免長期存放超出實際使用需求的大額資產;跨鏈前應確認使用的是官方橋,並了解提款時間、暫停機制和緊急退出方式;遇到網路停止出塊、跨鏈異常或官方發布安全預警時,不要反覆提交交易或繼續橋接資產。
更穩妥的做法,是將不同用途和不同風險等級的資產分散管理,而不是把全部流動性押在同一條 L2、同一個跨鏈橋或同一種退出機制上。
三、合約沒被攻破,第三方服務也可能把攻擊帶給使用者
如果說錢包和 L2 的問題仍然發生在較為底層的技術元件中,那麼 Polymarket 的事件則說明,距離使用者最近的網頁前端,同樣可能成為資金入口。
6 月 25 日,Polymarket 表示,其使用的一家第三方供應商遭到入侵,攻擊者藉此向部分使用者存取的 Polymarket 前端注入了惡意腳本。
根據安全機構及鏈上分析人員的統計,事件造成約 300 萬美元使用者資產損失,涉及約 11 個錢包。被盜資金隨後從 Polygon 跨鏈至以太坊,並被兌換為約 1893 枚 ETH,不過後續 Polymarket 表示已經移除受影響的依賴,並將向受影響使用者全額退款。
這起事件的關鍵在於,使用者存取的可能仍然是正確的 Polymarket 網域,現有披露也未指向 Polymarket 核心智慧合約漏洞,問題主要出在網頁載入的第三方前端依賴。
這也是一面鏡子,如今多數 Web3 應用都不是完全運行在鏈上的,使用者看到的網頁,如交易介面,仍然大量依賴傳統網際網路基礎設施和第三方軟體套件,其中任何一個依賴被攻擊,都可能讓合法網站向使用者展示錯誤資訊、替換收款地址,或者誘導錢包簽署惡意交易。
因此,「網址是真的」並不必然等於「此刻載入的所有程式碼都是安全的」,「合約通過審計」也不等於使用者與合約之間的整條互動路徑都沒有風險。面對這類前端和供應鏈攻擊,普通使用者很難獨立檢查網頁載入的每一段程式碼,但仍然可以透過降低單次互動權限,限制潛在損失:
- 使用獨立的 DApp 互動錢包:長期儲蓄錢包盡量不要直接連接各種 DeFi、NFT、預測市場和空投網站,日常互動錢包只存放近期準備使用的資金,即便前端或授權出現問題,影響範圍也相對有限;
- 簽名前關注實際操作,而不是只看網頁按鈕:網頁上寫著「登入」「領取」或「確認訂單」,並不代表錢包中跳出的簽名也是同一件事;
- 網頁出現異常時,不要依賴慣性繼續操作:頁面突然要求重新匯入助記詞、下載額外外,或顯示的交易內容與網頁描述不一致,應暫停互動,透過專案的多個官方管道確認情況,並檢查或撤銷不再使用的歷史授權;
從錢包產品的角度看,這也意味著錢包承擔的角色正在發生變化。
它不應只是一個保存私鑰和跳出簽名視窗的工具,還需要盡可能幫助使用者理解交易意圖、識別異常授權、展示資產變化,並在高風險互動發生之前提供足夠清晰的警告。
但錢包也無法替使用者消除所有風險。更現實的安全模型,是錢包、協議、L2、第三方服務商和使用者共同縮小攻擊面,而不是把全部責任推給任何一方。
寫在最後
過去,人們常說,誰掌握私鑰,誰就掌握鏈上資產。
這句話仍然成立,但並沒有涵蓋使用者資產從「產生交易意圖」到「完成鏈上結算」之間的全部過程。今天的 Web3 安全已經不只是保護一組助記詞,而是保護從錢包生成金鑰、展示交易、執行簽名,到網路驗證和最終結算的整條路徑。
當然,這並不意味著使用者需要遠離所有鏈上互動。對使用者而言,真正有效的安全習慣,意味著需要把資產用途、風險等級和互動場景分開管理:長期資產重隔離,日常互動小額度,陌生 DApp 低授權,高風險操作多驗證。
畢竟,當安全風險從一個點擴展為一條鏈,使用者的防禦,也必須從保護好私鑰,升級成一套完整的習慣。
與大家共勉。