Cobo 安全團隊:WazirX 被盜幣事件分析
1 事件概述
2024 年 7 月 18 日,印度加密貨幣交易所 WazirX 的一個多簽錢包被盜超過 2.3 億美元。該多簽錢包為 Safe{Wallet} 智能合約錢包。攻擊者誘導多簽簽名者簽署了合約升級交易,攻擊者通過升級後的合約直接轉移了錢包中的資產,最終將約超過 2.3 億美元的資產全部轉出。
2 攻擊過程分析
注:以下分析基於 WazirX 和 Liminal 事後報告、鏈上數據、互聯網公開信息,可能存在信息不全或誤差,從而導致分析結論有所偏差。分析結果僅供參考,具體以當事廠商後續調查結果為準。
原文鏈接:
WazirX 博客 : https://wazirx.com/blog/wazirx-cyber-attack-key-insights-and-learnings/
Liminal Custody 博客 : https://www.liminalcustody.com/blog/update-on-wazirx-incident/
2.1 多簽錢包配置與攻擊過程
根據雙方披露的信息,WazirX 使用 Safe (前稱 Gnosis Safe) 進行資金管理,並通過 Liminal 進行協管。該 Safe 錢包採用 4/6 的簽名方式,其中 5 把私鑰為 WazirX 成員通過硬體錢包管理,1 把私鑰由 Liminal 通過 HSM 管理。
正常流程下,WazirX 通過 Liminal 平台的網頁發起交易轉帳,轉帳地址受 Liminal 平台維護的地址白名單限制。WazirX 的 5 位簽名者中的 3 位確定交易無誤後,使用硬體錢包簽名。Liminal 平台收集到 3 個簽名後,再使用 HSM 添加最後的簽名,並使交易上鏈。從鏈上攻擊交易中看,攻擊交易中確實包含了 3 個合法簽名,且第 4 個簽名為交易發起者(即 Liminal),與披露的錢包管理架構一致。
結合 Liminal 和 WazirX 雙方報告,這筆惡意多簽交易發起的流程如下:
攻擊者通過某種未知手段(包括不限於 0-day 網路攻擊、社會工程學攻擊等)誘導 WazirX 簽名交易。
WazirX 3 名成員,分別通過書籤等登入 Liminal 平台,進行 Google 驗證及 MFA 驗證通過後,查看到待簽名交易為 2 筆 GALA 和 1 筆 USDT 轉帳交易,並使用硬體錢包進行了簽名。但實際受害人簽署的內容並不是代幣轉帳交易,而是多簽錢包的合約升級交易。由於實際交易內容與聲稱的轉帳交易不一致,Liminal 平台分別拒絕了 3 筆交易。
至此攻擊者收集到 3 名成員對於合約升級交易的簽名,再次向 Liminal 平台提交惡意的合約升級交易,並附帶 3 個正確的簽名。
Liminal 平台檢查簽名無誤後,作為第 4 個簽名人發起交易,交易上鏈後,錢包合約升級,控制權轉移到攻擊者手中。
根據 WazirX 的描述,簽名人員使用硬體錢包保管私鑰。攻擊者也是通過偽造轉帳交易的方法收集到了 3 個簽名人的簽名。因此推斷 3 位 WazirX 管理者並不存在私鑰洩露的情況。同樣 Liminal 也不存在私鑰洩露的情況,否則攻擊者無須通過 Liminal 平台發起最後一筆交易。
另一方面,根據 WazirX 的描述,簽名人員通過書籤訪問了正確的 Liminal 平台,並進行了 Google 與 MFA 驗證。Liminal 平台也記錄到了三筆異常交易的日誌,因此也可以排除 WazirX 登入了虛假 Liminal 平台釣魚頁面被收集簽名的可能。另外根據 WazirX 披露的設備初步取證結果,也認為 WazirX 3 名簽名人的設備沒有受到攻擊。
綜上所述,可能的一種攻擊手段是,攻擊者通過中間人攻擊、XSS 攻擊或其他零日攻擊等手段劫持了 WazirX 受害人的瀏覽器前端頁面,偽造展示給 WazirX 受害人合法的交易內容。攻擊者收集齊 3 個 WazirX 受害人的簽名後,通過已有會話向 Liminal 平台提交了最終的合約升級攻擊交易,並通過 Liminal 平台風控後成功上鏈。
2.2 攻擊事件暴露出的问题
根據前述分析,WazirX 和 Liminal 雙方在事件中均暴露出一定問題。
Liminal 平台風控不嚴格:
從最終鏈上的攻擊交易中可以看出,Liminal 平台對合約升級交易進行了簽名並上鏈。平台的白名單轉帳風控策略沒有起到應有的作用。
Liminal 平台披露的日誌中可以看出,平台已經發現並拒絕了三筆可疑交易,但沒有第一時間向用戶告警或凍結錢包轉帳交易。
WazirX 沒有仔細核對硬體錢包簽名內容:
- 硬體錢包中展示的內容才是真實待簽署的交易內容。WazirX 簽名人員在簽署多簽交易時,信任了 Liminal 頁面展示的交易,沒有仔細核對硬體錢包待簽名內容與 Liminal 頁面展示的交易是否一致而直接簽名,提供了攻擊者所需要的合約升級交易的簽名。