2022年2月19日,專注於跨鏈基礎設施的Multichain發布了關於1月10日出現的漏洞事後分析,並準備啟動用戶補償方案。全文主要內容如下。
原文鏈接
2022 年1 月10 日,Multichain收到安全公司Dedaub 發出的有關Multichain流動性池合約和路由器合約的兩個嚴重漏洞警報,後被證實8種代幣(WETH、WBNB、MATIC、AVAX、MFI、WSPP、TLOS、IOTEX)受到了漏洞的影響。流動性池漏洞一經報告,Multichain團隊便立即將受影響的代幣流動性升級部署到新合約,使漏洞迅速得到修復。但是,對於尚未取消對受影響的路由合約授權的用戶來說,風險仍然存在。重要的是,取消授權必須是用戶自己本人處理,因此,Multichain在1 月18 日對該漏洞進行了官方公告,並敦促用戶按照指示立即採取行動。
事件影響
數據統計截至:UTC時間2 月18 日24:00。
- 總共有7962個用戶地址受到影響,4861個地址已取消授權,其餘3101個地址尚未採取行動進行取消。
- 總共有1,889.6612枚WETH 和833.4191枚AVAX 被盜,其中912.7984 枚WETH 和125枚AVAX 在Multichain 和白帽的共同努力下追回。
Daily hack sum, by @Dune Analytics
1月18日,Multichain團隊在所有渠道通知受影響的用戶,經過一個月的努力,到目前為止已經有超過61% 的用戶已經成功取消授權。根據Dune Analytics 監測數據,攻擊行為主要發生在漏洞發布後的第一周,1月25 日之後,黑客交易和金額開始大幅下降。在過去兩週內雖然也發生了攻擊,但涉及到金額都比較小。
補償計劃
在Multichain和白帽黑客的共同努力下,目前近50%的金額已被追回(912.7984 枚WETH 和125 枚AVAX)。儘管Multichain盡了最大的努力挽救損失,還是有976.8628 枚WETH 被盜。
為補償用戶損失,Multichain發起了一項補償100% 用戶損失提案(包括礦工費),資金將歸還給以下兩類用戶:
(1)已取消授權的用戶
(2)在Multichain help desk(https://multichain.zendesk.com/hc/en-us/requests/new)提交ticket的用戶。
Multichain團隊表示,距1月18號官方披露漏洞消息並敦促用戶取消授權已經過去一個月的時間。 Multichain團隊在這一個月內,做了最大的努力採取所有可行方式來通知受影響用戶。補償方案一經對外,難以避免黑客的惡意攻擊。因此,Multichain團隊對自2 月18 日24:00 (UTC時間)之後發生的任何損失,不再進行補償。不過,Multichain表示會繼續盡最大努力從攻擊中盡可能多地追回被盜資金,並將持續更新消息。 2月18日24:00 (UTC 時間)後追回的資金也將全部退還給用戶(減去礦工費)。
此外,Multichain再次強烈敦促曾經授權受影響的代幣合約的用戶在將任何代幣發送到他們的錢包之前一定要取消授權。用戶可以通過Multichain UI 進行狀態檢查和取消授權。如果不清楚如何操作,可以按照Multichain給出的說明進行操作。同時提醒用戶如果遇到任何問題,可以在Multichain help desk提交ticket,或通過官方Telegram進行聯繫,Multichain團隊將會提供幫助。
Multichain UI: https://app.multichain.org/#/approvals
操作說明:https://medium.com/multichainorg/action-required-critical-vulnerability-for-six-tokens-6b3cbd22bfc0
Multichain help desk:https://multichain.zendesk.com/hc/en-us/requests/new
Telegram: https://t.me/anyswap
漏洞賞金支付
安全公司Dedaub 在發現漏洞時,立即與Multichain聯繫,並幫助Multichain進行對抗攻擊。對於Dedaub披露的兩個漏洞,Multichain團隊將按照最高賞金分別獎勵100 萬美元,總計獎勵Dedaub 200萬美元漏洞賞金。 Multichain認為Dedaub為可持續的加密生態系統做出了巨大貢獻,非常感謝Dedaub 為Multichain安全所做的一切。 Multichain表示日後將繼續提供豐厚的獎勵,以鼓勵更多的人對漏洞的研究和及時披露。
事件回顧
1 月10 日:
在接到Dedaub的報告後,Multichain立即成立了聯合小組,討論並採取了一系列措施保護資金安全。
- Multichain檢查了所有代幣合約(1500+),發現6種代幣(WETH、WBNB、MATIC、AVAX、MFI、WSPP)可能存在風險,涉及到其流動性池的漏洞已在24 小時內修復。
- 暫停使用6種代幣的路由器合約。
- 與合作夥伴共同開展全面檢查,排查受影響的用戶地址。
- 建立實時監控系統。
- 開發網頁前端,設置取消授權入口(https://app.multichain.org/#/approvals)。
- 創建資產保全合約。
- 通知用戶取消授權。
1 月18 日:
Multichain發布官方公告,敦促受影響的用戶取消授權,並不斷向所有用戶更新事件最新情況。以此同時,Multichain與所有可能的渠道聯繫(包括Opensea、MetaMask、Polygon Bridge、Dapps 等)以呼籲用戶立即採取行動保障資金安全,從而最大限度地提高取消授權的用戶比例。第一個黑客攻擊發生在提示公告發布後的16 小時,Multichain和安全公司Dedaub通過運行Whitehat bots立即展開對抗以挽救用戶損失。
1 月19 日:
為防止用戶遭受損失,Multichain開始向所有受影響的AVAX、MATIC、WBNB 地址發送鏈上交易,提示用戶盡快取消授權。
此外,Multichain與Etherscan 瀏覽器進行聯繫,為攻擊者和受影響的WETH 地址設置警告提示欄。
1 月20 日:
經過協商,一名黑客同意返還259+63 ETH。
1 月22 日:
安全公司BlockSec 協助Multichain開展白帽救援行動。
1 月24 日:
Multichain為Dapps 開發了一個授權-取消API,通過集成API, 該Dapps上的用戶可以直接取消授權。 SpookySwap、SushiSwap、SpiritSwap、AVAX bridge、AAVE 等都已完成集成。
1月25日:
一名社區成員(twitter handle @0xlosha)加入了白帽救援並成功保護125 個AVAX。
Multichain 發現一個影響另外2種代幣(TLOS、IOTEX)的漏洞,並及時採取措施解決,該漏洞在24小時內成功修復,沒有造成任何損失。
1 月29 日:
Multichain協助WSPP 持有者解決了一個發生於1 月26 日的資金被盜事件。
2 月14 日:
在社區成員的幫助下,Multichain 與Tether取得聯繫,其凍結了一名黑客以太坊地址中的USDT,價值超過715,000 美元。
2 月17 日:
所有受影響的代幣已升級到V6 合約並支持原生幣跨鏈,無需用戶授權代幣。
接下來,Multichain將繼續與社區盡最大努力追踪黑客並保護用戶資金安全。
技術分析
在接到安全公司提供的漏洞預警後,Multichain團隊開發人員迅速核查、重現、驗證了該漏洞的存在,並徹底排查所有可能涉及到的合約,最終確認此次漏洞涉及2個合約AnyswapERC20 (V5及之前版本), AnyswapRouter(V5及之前版本),具體涉及到的合約內漏洞方法有:
①AnyswapERC20:
- depositWithPermit
②AnyswapRouter: - anySwapOutUnderlyingWithPermit
- anySwapOutExactTokensForTokensUnderlyingWithPermit
- anySwapOutExactTokensForNativeUnderlyingWithPermit
(1)產生原因
該漏洞是在Anyswap合約與underlying token合約的共同作用下產生,主要原因是,對於部分underlying token合約,不存在permit方法實現,且存在有fallback函數,當調用它的permit方法時會執行通過,從而後續與資金相關的操作得到執行,影響資金安全。
AnyswapERC20合約的主要用途是資金流動性池,在收到漏洞預警的第一時間,團隊立即修復並部署了V6版本安全合約,同時向MPC網絡發出告警請求,將資金充值到安全流動性池內。至此,該部分資金安全。
AnyswapRouter合約主要用於鏈間資產路由,此漏洞主要影響的資產是對於該合約已授權的用戶資產,而資產取消授權需要用戶本人來處理。團隊立即在應用首頁開放漏洞資產強制取消授權頁,並儘可能通知用戶來取消授權,同時設置了資產保全合約,並密切監測該部分資金的異動。
下面以具體攻擊示例,展示此次漏洞,最終的效果是:將曾經給風險資產token為AnyswapRouter授權過的用戶資金,轉入攻擊合約。
(2)如何攻擊
攻擊者部署攻擊合約並設置攻擊合約的underlying參數為風險資產token地址,調用AnyswapRouter合約的anySwapOutUnderlyingWithPermit方法,from為給上述token為AnyswapRouter授權過的用戶地址,token為攻擊合約地址,amount為上述用戶資金餘額,其他參數任意。
進一步安全保障措施
進一步的安全審計。 Multichain將對合約、跨鏈橋和MPC 進行進一步的安全審計。 Multichain團隊將繼續努力對整個跨鏈橋架構安全進行增強,並密切監控所有新合約。
MULTI安全基金。 Multichain 將發起安全基金的治理提案。當Multichain由於自身系統和服務可能存在的漏洞造成資產損失時,安全基金可以作為一種必要和可能的救助措施。該基金的設立和使用情況後續會進行公佈。
漏洞賞金計劃。 Multichain鼓勵社區繼續審查Multichain的代碼和安全性。 Multichain將與Immunefi 合作開展漏洞賞金計劃,該計劃旨在認可獨立安全研究人員和團隊的價值。 Multichain將為發現和提交漏洞提供500 至1,000,000 美元的獎勵。更多詳情見https://docs.multichain.org/security/bug-bounty。
對外公開免費的REVOKE-APPROVAL API。 Multichain為此事件開發的授權-取消API 已被證明是有效的。集成此API 的協議和應用程序可以檢測並提醒受影響的用戶地址採取相應措施。 Multichain正在對其進行更新,並將為所有項目提供免費的公共API。