这是一次被盗走80,000 颗以太的交易纪录,是目前Defi 金额第二大的被盗事件。
https://etherscan.io/tx/0x24c7d855a0a931561e412d809e2596c3fd861cc7385566fd1cb528f9e93e5f14
该地址已经被etherscan 举报为黑名单了,钱包里面目前还有93,750 颗ETH
https://etherscan.io/address/0x629e7da20197a5429d30da36e77d06cdf796b71a
然后Wormhole 很快也发现自己出问题了,对骇客隔空喊话,并且提供一白帽协议,只要骇客愿意归还所有被盗的wETH,就提供给他1,000万美金的奖金!
而且可以瞬间洗白变成合法合理的白帽骇客,我猜应该有很大的机率会接受这deal。
我们就来看看事情最主要的原因。
在Wormhole 里面要mint ETH 的流程是要执行 complete_wrapped -> 然后需要transfer message -> transfer message 是透过post_vaa 这个function 产生-> 透过verify_signatures 去验证签名是不是合法的-> 然后用到了solana sdk 提供的一个function load_instruction_at,也是这次漏洞发生的主因,不需要透过系统的地址就可以执行。
https://github.com/solana-labs/solana/blob/7ba57e7a7c87fca96917a773ed944270178368c9/sdk/program/src/sysvar/instructions.rs#L180-L188
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 来扛呢?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。