CertiK:Solana跨鏈橋蟲洞事件分析

avatar
CertiK
2年前
本文約969字,閱讀全文需要約2分鐘
2月3日凌晨,Solana跨鏈橋項目蟲洞(Wormhole)遭受攻擊,本文將為你詳細揭露攻擊流程及防範措施。

CertiK:Solana跨鏈橋蟲洞事件分析

北京時間2022年2月3日凌晨1點58分,Solana跨鏈橋項目蟲洞(Wormhole)遭受攻擊者發起的攻擊。黑客繞過了Solana 上的Wormhole Bridge驗證過程,並為自己鑄造了Wormhole ETH (wETH)。

二級標題

二級標題

蟲洞(Wormhole)簡介

蟲洞(Wormhole),又稱愛因斯坦-羅森橋,也譯作蛀孔。是宇宙中可能存在的連接兩個不同時空的狹窄隧道。

漏洞利用交易

漏洞利用交易

漏洞利用交易

二級標題

https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es 

二級標題

https://etherscan.io/address/0x629e7da20197a5429d30da36e77d06cdf796b71a#internaltx 

漏洞攻擊流程

步驟一:攻擊者使用假sysvar account調用“verify_signatures”函數:https://solscan.io/tx/25Zu1L2Q9uk998d5GMnX43t9u9eVBKvbVtgHndkc2GmUFed8Pu73LGW6hiDsmGXHykKUTLkvUdh4yXPdL3Jo4wVS①以偽造的“sysvar account”作為參數調用的“verify_signatures”函數:

CertiK:Solana跨鏈橋蟲洞事件分析

相比之下,以下截圖是以真實的“sysvar account”作為參數的“verify_signatures”函數:

CertiK:Solana跨鏈橋蟲洞事件分析

② “verify_signatures”函數從sysvar (L92) 加載當前指令。

CertiK:Solana跨鏈橋蟲洞事件分析

③ 然而,函數“load_current_index”並不能驗證“sysvar account”是否真的是“system sysvar”。由於從“sysvar”中檢索到的當前指令(L92)是由攻擊者控制的,因此它可以順利通過以下驗證過程。

步驟二:攻擊者隨後使用上一步驗證的簽名調用“post_vaa”函數,並創建一個惡意消息帳戶,聲明要鑄造12萬枚wETH:https://solscan.io/tx/2SohoVoPDSdzgsGCgKQPByKQkLAXHrYmvtE7EEqwKi3qUBTGDDJ7DcfYS7YJC2f8xwKVVa6SFUpH5MZ5xcyn1BCK

CertiK:Solana跨鏈橋蟲洞事件分析

① Account2 是通過“verify_signatures”指令生成的簽名集。 ② Account3 是將在“complete_wrapped”函數中使用的消息帳戶。

步驟三:攻擊者調用“complete_wrapped”函數讀取惡意消息賬戶中的數據並鑄造12萬枚wETH:https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es

CertiK:Solana跨鏈橋蟲洞事件分析

① Account3 是“post_vaa”函數生成的消息賬戶。

總結

這個漏洞的根本原因是在驗證簽名過程(“verify_signatures”)中,程序使用了一個在Solana更新至1.8.0時即被廢棄的“load_current_index”函數。該函數不會驗證輸入的“sysvar account”是否真的是“system sysvar”,從而攻擊者可以趁機偽造這個關鍵帳戶。

合約漏洞分析

這個漏洞的根本原因是在驗證簽名過程(“verify_signatures”)中,程序使用了一個在Solana更新至1.8.0時即被廢棄的“load_current_index”函數。該函數不會驗證輸入的“sysvar account”是否真的是“system sysvar”,從而攻擊者可以趁機偽造這個關鍵帳戶。

CertiK:Solana跨鏈橋蟲洞事件分析

總結

總結

目前,Wormhole團隊已修復漏洞並已恢復網絡。在此,CertiK給開發者提出如下幾點建議:

  • 開發者在使用外部依賴的函數時,需要對這個函數有足夠的了解。

  • 隨時關注外部依賴代碼庫的重要更新,在有重大版本變動時及時對自己的代碼庫做出相應的調整。

  • 當代碼版本更新時,也需及時進行全面審計,並將審計後的代碼及時更新到已部署上鍊的代碼中。

農曆破五將至,希望大家“破五窮”。同時也希望每一個項目在經過嚴格的審計之後上線部署從而獲得更高的安全性並減少財產損失的可能。好運從新的一年起開始不斷“循環”;安全從嚴格的審計開始,每個項目都有更好的“開端”!

迄今為止,CertiK已獲得了2500家企業客戶的認可,保護了超過3110億美元的數字資免受損失。歡迎點擊CertiK公眾號底部對話框,留言免費獲取諮詢及報價!

原創文章,作者:CertiK。轉載/內容合作/尋求報導請聯系 report@odaily.email;違規轉載法律必究。

ODAILY提醒,請廣大讀者樹立正確的貨幣觀念和投資理念,理性看待區塊鏈,切實提高風險意識; 對發現的違法犯罪線索,可積極向有關部門舉報反映。

推薦閱讀
星球精選