不止於私鑰:從錢包、L2 到供應鏈,如何守護 Web3 的安全邊界?
當安全風險從一個點擴展為一條鏈,用戶的防禦,也必須從保護好私鑰,升級成一套完整的習慣。
撰文:imToken
剛剛過去的 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 低授權,高風險操作多驗證。
畢竟,當安全風險從一個點擴展為一條鏈,用戶的防禦,也必須從保護好私鑰,升級成一套完整的習慣。
與大家共勉。



