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

8月2日,跨链桥协议Nomad遭遇攻击,超过1.5亿美元的用户资金被黑客转移,Paradigm合伙人samczsun对此安全事件进行了分析。Nomad刚刚在遭受Web3有史以来最混乱的一次黑客攻击中损失了1.5亿美元。那这到底是如何发生的,其根本原因是什么?请允许我带你们到这次攻击事件的幕后。

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

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

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

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

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

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

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

哎……

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

这就是黑客行为如此混乱的原因,你不需要了解Solidity或Merkle树之类的东西,你所要做的就是找到一笔有效的交易,用你的地址查找/替换另一个人的地址,然后重新广播它。总的来说,一次例行升级将零哈希标记为有效根,其效果是允许在Nomad上消息,攻击者滥用此功能来复制/粘贴交易,并在一场疯狂的混战中迅速耗干了这座跨链桥的资金。译者注:此次Nomad跨链桥的黑客攻击,Moonbeam和evmos这两条公链的用户会受到较大影响,其中,Moonbeam涉及的跨链资金相对较大。这次事件再次提醒了我们跨链桥的风险,用户在使用跨链桥后,应尽量避免持有跨链资产,而应尽快兑换成区块链的原生资产,并且以太坊主链的原生资产安全性要高于其他链。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:31ms0-5:381ms