2 月 21 日,約 15 億美元的 ETH 與質押 ETH 代幣,在一筆獲得批准的交易中離開了 Bybit 的一個冷錢包——這是有史以來規模最大的加密貨幣竊案。那個錢包是多簽錢包。所有必要的簽名人都簽了名。而就目前所有調查所示,沒有任何私鑰被盜。如果 Bybit 被駭的教訓中你只打算記住一條,請記住這一條:密碼學守住了,錢卻照樣流失。
這並不是反對多簽的論據。我們自己就打造多簽錢包,也依然認為 M-N 簽名是保管大額資產時最能被獨立驗證的方式。它真正說明的,是攻擊面實際位於何處。多簽分散了金鑰的保管;但它本身並不會分散驗證。每一個簽名的可信程度,恰好等於簽名人對眼前待簽內容的理解程度——而在 2 月 21 日,這份理解是攻擊者一手炮製的。
事發兩週,我們目前所知
截至本文撰寫時,由 Bybit 的聲明、Safe 的事後披露與 FBI 的公開歸因拼湊出的事件輪廓是一致的。Bybit 團隊原本要執行一筆例行轉帳,把資產從以太坊冷多簽錢包轉入溫錢包,使用的是他們用過許多次的 Safe{Wallet} 網頁介面。每位簽名人看到的都是一筆看似正當的交易:熟悉的介面、預期中的流程,沒有任何會打斷肌肉記憶的異常。
但這組簽名人實際授權的,卻是另一回事。這筆交易悄悄更改了錢包本身的智慧合約邏輯,換上了一個由攻擊者控制的實作。一旦真實的簽名上鏈,金庫便服從其新邏輯,約 40 萬枚 ETH 與質押 ETH 代幣——當時價值約 15 億美元——隨之流出。Safe 的調查將這次入侵追溯到一台開發者機器:惡意程式碼經由前端投放,並精準鎖定 Bybit 的簽名人;對其他所有人而言,介面表現一切正常。2 月下旬,FBI 公開將這次行動歸因於北韓的 Lazarus Group,追蹤代號為 TraderTraitor。
還有兩項事實同樣值得並列強調。Bybit 在事件過後始終保持償付能力,並持續處理提領。而且自始至終沒有任何金鑰材料被竊取:沒有助記詞被釣魚,沒有簽名裝置被奪走,也沒有任何門檻在數學上被繞過。
金鑰守住了——而這正是重點所在
多簽錢包要求 N 把獨立金鑰中的 M 把批准交易,資產才能移動。這項特性在 2 月 21 日運作得完美無缺。簽名是真實的,門檻是合法達成的,合約也精確執行了被簽署的內容。攻擊者從未試圖擊敗數學;他們安排這組簽名人心甘情願地為一個謊言簽名。Bybit 被駭是交易驗證的失敗,而不是多簽密碼學的失敗。
簽名是對一筆交易內容的表態。如果你驗證的內容不是你簽署的內容,簽名人有幾位都無關緊要。
那些寫著「冷錢包被駭」的新聞標題忽略了這個區別,而這個區別之所以重要,是因為它決定了你該修補什麼。冷儲存完成了它分內的職責:金鑰從未接觸任何連網機器。多簽也完成了它分內的職責:沒有任何單一簽名人能夠獨自行動。真正失效的,是那個幾乎沒有人寫進威脅模型的元件——螢幕。
精確定義盲簽
盲簽,是指批准一筆簽名人無法獨立驗證其真實內容的交易。在以太坊上,簽名人以密碼學方式批准的是結構化交易資料的雜湊值,而不是螢幕上那段人類可讀的摘要。必須有某個軟體把這些資料解碼還原成意圖——目的地、金額、合約呼叫——而簽名人只能全盤接收該軟體的說法。如果介面說謊,人確認的是虛構,鏈上執行的卻是事實。
Bybit 這筆交易濫用的正是這個缺口。一個大多數介面都不會醒目呈現的欄位——操作類型——把一筆看似普通的轉帳變成了一次 delegatecall,重寫了錢包的邏輯。硬體簽名裝置也不會自動堵上這個缺口:一台只顯示一串不透明雜湊值的裝置,等於是在要求人類去驗證任何人都無法解讀的東西。這是一場驗證的表演,而且可以說比什麼都不做更糟,因為它在不增加任何審視的情況下製造了信心。
一個前端、一組簽名人、一次全盤失守
Bybit 的簽名人持有各自獨立的金鑰,分放在不同的裝置上。但他們全都透過同一個網頁前端驗證交易,於是一個被攻陷的介面一次就觸及了整組簽名人。簽名人的獨立性需要的是獨立的驗證管道,而不僅僅是獨立的金鑰。一個 3-3 錢包,如果所有簽名人都信任同一塊螢幕,在實務上就塌縮成 1-1——而那個「1」,正是控制介面的人。
這個教訓不限於任何一種方案。MPC 錢包以分散的金鑰分片取代了鏈上合約——我們在《MPC 與多簽:一份誠實的比較》中比較過兩者的取捨——但 MPC 的簽名流程終點完全相同:人類批准某個介面為他們渲染出來的交易內容。這也折射出這個行業的優先順序:太多精力被投向遙遠而奇特的威脅——去年 12 月我們檢視過量子電腦距離比特幣的金鑰還有多遠——而這個行業史上最大的一次竊案,卻不需要任何新的密碼學。它只需要 JavaScript。
Bybit 被駭的實用教訓
以下沒有任何一條需要新的密碼學或新的硬體。它們是營運紀律——而這正是它們總被略過的原因。
- 把每一塊簽名螢幕都視為不可信。建構你交易的那個介面,在你的餘額足以匹配攻擊成本的那一刻起就成了目標。要假設它會在最要命的那一天對你說謊。
- 在第二個獨立介面上驗證。在一台與建構交易的機器毫無交集的裝置上,解碼原始交易——目的地、金額、calldata、操作類型。讓兩塊螢幕以完全相同的方式說謊,遠比讓一塊螢幕單獨說謊困難得多。
- 拒絕不透明的交易內容。如果簽名人無法逐一參數看清一筆交易在做什麼,那麼這筆交易正確的簽名數量就是零。「大概又是那筆例行轉帳吧」——15 億美元就是這樣流失的。
- 限制爆炸半徑。地址白名單、每日與每月限額,以及職責分離的角色,能把一次錯誤的批准變成有上限的損失,而不是全盤盡失。Bybit 在那個金庫的損失之所以是全部,正是因為沒有任何機制限制單筆獲批交易所能做的事。
- 放慢例行操作。這次攻擊被包裝成該團隊最平凡的日常操作,因為日常操作受到的審視最少。例行不是放鬆的理由;它是攻擊者會選擇的那件戲服。
這如何塑造 Ownbit 的簽名設計
在上述 Bybit 被駭的教訓中,最持久的一條是結構性的:最終驗證必須放在被攻陷機器觸及不到的地方。Ownbit 的冷錢包工作流程正是圍繞這個理念打造的。一支閒置手機成為氣隙簽署裝置;連網手機則執行不持有任何金鑰的觀察錢包,負責建構未簽名交易,再以 QR 碼傳遞過去。離線手機會在任何簽名產生之前,先顯示它實際被要求簽署的內容,然後以同樣的方式把簽名傳回。QR 這一跳被刻意收窄:每筆交易都被迫經過第二個獨立介面,而持有金鑰的裝置永遠不會載入那個可能已被投毒的網頁。
對團隊而言,企業多簽直接落實了限制爆炸半徑的教訓:地址白名單讓資產無論由誰簽名都無法流向未列名的目的地、每日與每月花費限額、Owner(擁有者)、Signer(簽名人)與 Security Admin(安全管理員)角色,以及緊急暫停。這些控制無法讓欺騙變得不可能——沒有任何東西能完全做到——但它們為一次被操縱的批准所能造成的代價設下了上限。
最後,坦誠地說說我們自己。Ownbit 的伺服器負責協調簽名,但從不持有使用者的金鑰;Ownbit 多簽中的每一把金鑰都是標準的 BIP39 助記詞,恢復也不依賴我們的基礎設施。最小化信任是雙向的:同一套設計既限制了被攻陷的協調者能對你造成的傷害,也讓我們得以書寫 Bybit 最糟的一週,而不必假裝自己對定向攻擊免疫。值得用來要求廠商的標準,是有上限的損害,而不是自稱刀槍不入。
常見問題
Bybit 被駭是多簽的失敗嗎?
不是。多簽合約正確執行了它的門檻,也沒有任何私鑰被盜。是必要的簽名人被欺騙,批准了一筆更改錢包自身邏輯的交易——失敗出在交易驗證,而不是多簽密碼學。正確的回應是加入獨立驗證,而不是放棄多簽。
加密貨幣中的盲簽是什麼?
盲簽是指批准一筆你無法獨立驗證其真實內容的交易。嚴格來說,簽名人批准的是交易資料的雜湊值,並依賴某個介面誠實地解碼。如果該介面被攻陷,簽名人確認的是他們看到的內容,實際授權的卻是完全不同的另一回事。
Bybit 被駭損失了多少資產?
約 15 億美元的 ETH 與質押 ETH 代幣——約 40 萬枚 ETH——使其成為截至 2025 年 3 月初有紀錄以來規模最大的加密貨幣竊案。FBI 將這次攻擊歸因於北韓的 Lazarus Group。Bybit 保持了償付能力,並持續處理客戶提領。
多簽簽名人如何防範被攻陷的前端?
在一台與建構交易的機器毫無交集的第二裝置上驗證每一筆交易,並拒絕簽署任何你無法逐一參數解碼的交易內容。然後加上結構性限制——地址白名單、花費上限、角色分離——讓一次被欺騙的批准無法掏空整個錢包。
如果這些 Bybit 被駭的教訓促使你重新檢視自己的簽名流程,這個直覺是對的——而測試一套更好的流程只需要一個下午,而不是一整個金庫。Ownbit 的冷錢包工作流程讓一支閒置手機完全離線地驗證並簽署交易;企業多簽則為需要向多人負責的資產加上白名單、限額與角色。每位新使用者都享有 7 天免費試用,而無論如何,你的金鑰始終屬於你。