Solana跨链桥项目Wormhole遭遇黑客攻击,损失近3亿美元
摘要: Optimism&以太坊匿名研究人员smartcontracts对这次攻击进行了详细分析。
注:北京时间2月3日凌晨,Solana跨链桥项目Wormhole因遭到黑客攻击而损失了价值近3亿美元的ETH,对此,Optimism&以太坊匿名研究人员smartcontracts对这次攻击进行了详细分析。
我了解了Solana x Wormhole跨链桥被黑事件的过程,Wormhole跨链桥有价值3亿美元的ETH被转移走了,事情是这样发生的。
下面是完成这次漏洞攻击主要的tx,有8万枚ETH在一笔tx中被黑客从以太坊上的 Wormhole合约提取了出来:
尽管很戏剧化,但这笔交易只是一系列有趣事件的最后一步。我不得不继续追溯,以弄清楚到底发生了什么。
Wormhole是一个资产跨链桥,它基本上是在不同区块链之间移动加密资产的一种方式。具体来说,Wormhole 有一组“监护人”,他们负责签署链之间的资产转移。在实践中,过程要比我解释的要复杂一些,但这就是大体上的想法。
提取 8万 ETH 的交易,实际上是攻击者将8万ETH从Solana 转移到以太坊。我最初认为合约可能错误地验证了转账签名,但实际签名是完全检查过的。
Wormhole“监护人”以某种方式签署了这笔8万 ETH 的转账,就好像它是 100% 合法的一样,那这到底是怎么发生的?
第一个突破来自Solana 上的这笔交易,该交易不知何故铸造了 12 万个“Wormhole ETH”:
https://solscan.io/tx/2zCz2GgSoSS68eNJENWrYB48dMM1zmH8SZkgYneVDv2G4gRsVfwu5rNXtK5BKFxn7fSqX9BvrBc1rdPAeBEcD6Es
这解释了攻击的一部分!攻击者能够在 Solana 上铸造 Wormhole ETH,因此他们能够正确地将其提回到以太坊。现在我们只需要弄清楚攻击者是如何在 Solana 上铸造出这些Wormhole ETH 的……
下一个有趣的信息是这笔Solana 交易,它发生在12万 wETH被铸造出来之前,攻击者在Solana 上铸造了 0.1 Wormhole ETH:
https://solscan.io/tx/3HRKFcGjVVtf1kTHWXqJmG6zimbNeQAgN5xbt3MjP3ewYB1ih1WuWjMU6EWQXAz8shD46A3uyYW9pahoARrBmmPu
如果我们查看攻击者在以太坊上的交易历史,我们最终会看到攻击者确实从以太坊向Solana 存入了 0.1 ETH:
当然,攻击者肯定没有将 12万 ETH 存入到Wormhole。但这笔存款有一些有趣的地方,它肯定与攻击有关,但那是什么?
好吧,这就是我们开始进入Solana杂草的地方。这是我第一次查看 Solana合约,所以我花了一段时间才弄明白,但我想我终于明白发生了什么。
在 Solana 上铸造 Wormhole ETH 的交易触发了这个 Wormhole 函数“complete_wrapped”:
此函数采用的参数之一是“transfer message”,基本上是由监护人签名的消息,其说明了要铸造的代币和数量:
https://github.com/certusone/wormhole/blob/8d15138d5754b5e1202ff8581012debef25f7640/solana/modules/token_bridge/program/src/instructions.rs#L190
Solana 有点奇怪,所以这些参数实际上就是智能合约本身。但重要的是这些“transfer message”合约是如何创建的。这是产生 0.1 ETH 转账消息的交易:
https://solscan.io/tx/5fKWY7XyW6PTzjviTDvCTpsqgfoGAAqUs1mC6w4DZm25Ppw7fX7aWDmrnkknewyZ81qMSix3c18ZuvjoZUF34tpa
这个“transfer message”合约是通过触发一个名为“post_vaa”的函数创建的:
https://github.com/certusone/wormhole/blob/9a4af890e3e2d4729fe70e43aaced39ba8b33e35/solana/bridge/program/src/instructions.rs#L162
你是否理解花哨的代码并不重要,这里最重要的是 post_vaa 通过检查监护人的签名来检查消息是否有效。这部分似乎足够合理。但正是这个签名检查步骤破坏了一切。
评论(0)
Oh! no
您是否确认要删除该条评论吗?