其實這次 Solana 蟲洞(Wormhole)的問題跟跨鏈一點都沒關係,不知道大家在跟風亂噴幹嘛,於是過年沒事做,學習怎麼當駭客,順便練習寫文章,這次的漏洞真的是一個非常小的 Bug,導致這麼大的損失。本文由 FulyAI 創辦人 Rex Chen 撰稿。
(前情提要:Solana出大事!跨鏈橋Wormhole遭駭3.2億鎂WETH,官方提供駭客「1000萬鎂獎金」籲其歸還)
(背景補充:Wonderland後續|MIM擠兌導致 穩定幣2%脫鉤,巨鯨止損1.6億鎂、Luna 暴跌32%)
這是一次被盜走 80,000 顆以太的交易紀錄,是目前 Defi 金額第二大的被盜事件。
https://etherscan.io/tx/0x24c7d855a0a931561e412d809e2596c3fd861cc7385566fd1cb528f9e93e5f14
該地址已經被 etherscan 舉報為黑名單了,錢包裡面目前還有 93,750 顆 ETH
https://etherscan.io/address/0x629e7da20197a5429d30da36e77d06cdf796b71a
然後 Wormhole 很快也發現自己出問題了,對駭客隔空喊話,並且提供一白帽協議,只要駭客願意歸還所有被盜的 wETH,就提供給他 1,000萬美金的獎金!
而且可以瞬間洗白變成合法合理的白帽駭客,我猜應該有很大的機率會接受這deal。
我剛聽到這個事件就非常好奇,到底駭客怎麼辦到的!我也想學,可以看一下 https://twitter.com/kelvinfichter/ 大神分享的過程,我們就來看看事情最主要的原因。
在 Wormhole 裡面要 mint ETH 的流程是要執行 complete_wrapped -> 然後需要 transfer message -> transfer message 是透過 post_vaa 這個 function 產生 -> 透過 verify_signatures 去驗證簽名是不是合法的 -> 然後用到了 solana sdk 提供的一個 function load_instruction_at,也是這次漏洞發生的主因,不需要透過系統的地址就可以執行。
load_instruction_at 在 Solana 1.8.0 之後因為安全性的問題已經棄用,改用 load_instruction_at_checked,多了檢查系統地址才能執行。
駭客就先試打了0.1 ETH 拿到正常 verify_signatures 的參數去做偽造,反正系統不會檢查,這點相當的聰明。
然而 Wormhole 也在被 hack 之前就準備要更新成 Solana 1.9.4 版本,駭客抓準了修復漏洞之前開始攻擊,應該是已經潛伏已久。
所以這件事情其實影響到的範圍是所有有用到 load_instruction_at 的 Dapp,如果還有其他協議沒有更新新版的話應該還會有其他鍋會爆炸,建議有把資金放在 Solana 的朋友們,可以看一下自己使用的協議所使用的 Solana 版本,這非常重要,如果不是新的建議資金可以撤離觀望一下。
最後最有趣的是這個鍋是要 Wormhole 來扛還是 Solana 來扛呢?
📍相關報導📍
37億鎂比特幣砸盤危機?Bitfinex 駭客轉出9.46萬顆BTC,為去年崩盤前的10倍量
Wonderland後續|MIM擠兌導致 穩定幣2%脫鉤,巨鯨止損1.6億鎂、Luna 暴跌32%
忘記冷錢包密碼?工程師成功繞過安全防護、取回 200 萬美元加密資產
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務