《超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析

原文作者:SamczsunParadigm 合伙人 

原文编译:DeFi之道

8 月 2 日,跨链桥协议 Nomad 遭遇攻击,超过 1.5 亿美元的用户资金被黑客转移,Paradigm 合伙人 samczsun 对此安全事件进行了分析。

Nomad 刚刚在遭受 Web3 有史以来最混乱的一次黑客攻击中损失了 1.5 亿美元。那这到底是如何发生的,其根本原因是什么?请允许我带你们到这次攻击事件的幕后。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

这一切都始于 @officer_cia 在 ETHSecurity 电报群频道中分享的 @spreekaway 推文,虽然我当时不知道发生了什么,但离开 Nomad 跨链桥的资产数量显然不是一个好的迹象。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

我的第一个想法是代币的小数点有一些配置错误。毕竟,这座跨链桥似乎在进行“发送 0.01 WBTC,返还 100 WBTC”的促销活动。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

然而,在 Moonbeam 网络上进行了一些痛苦的手动挖掘工作之后,我确认 Moonbeam 交易确实跨链出了 0.01 WBTC,但不知何故,以太坊交易跨链出的资产是 100 WBTC。

https://moonscan.io/tx/0xcca9299c739a1b538150af007a34aba516b6dade1965e80198be021e3166fe4c

https://etherscan.io/tx/0xa5fe9d044e4f3e5aa5bc4c0709333cd2190cba0f4e7f16bcf73f49f83e4a5460

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

此外,WBTC 跨链交易实际上并没有证明什么。它只是直接调用了 `process`,可以说,能够在不首先证明的情况下处理消息是非常不好的

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

这个时候,有两种可能性,要么是在较早的区块中单独提交了证明,要么是 Replica 合约存在严重的漏洞。但是,绝对没有迹象表明最近有任何事已被证明。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

那只剩下了一种可能性,Replica 合约中存在着致命漏洞。那到底是怎么回事呢?快速查看后表明,提交的消息必须属于可接受的根,否则,第 185 行的检查将会失败。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

幸运的是,有一种简单的方法可以检查这个假设。我知道未经证明的消息根将是 0x00,因为消息 [_messageHash] 将未初始化。我所要做的就是检查合约是否会接受这一点。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

哎……

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

事实证明,在例行升级期间,Nomad 团队将可信根初始化为 0x00。需要明确的是,使用零值作为初始化值是一种常见的做法。不幸的是,在这种情况下,它有一个很小的副作用,即自动验证每个消息。

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

\"超1.5亿美元损失,跨链桥协议Nomad黑客攻击事件分析\"

这就是黑客行为如此混乱的原因,你不需要了解 Solidity 或 Merkle 树之类的东西,你所要做的就是找到一笔有效的交易,用你的地址查找/替换另一个人的地址,然后重新广播它。

总的来说,一次例行升级将零哈希标记为有效根,其效果是允许在 Nomad 上欺骗消息,攻击者滥用此功能来复制/粘贴交易,并在一场疯狂的混战中迅速耗干了这座跨链桥的资金。

译者注:此次 Nomad 跨链桥的黑客攻击,Moonbeam 和 evmos 这两条公链的用户会受到较大影响,其中, Moonbeam 涉及的跨链资金相对较大。这次事件再次提醒了我们跨链桥的风险,用户在使用跨链桥后,应尽量避免持有跨链资产,而应尽快兑换成区块链的原生资产,并且以太坊主链的原生资产安全性要高于其他链。

bitpie

发表评论

您的电子邮箱地址不会被公开。