编译|Paradigm研究合伙人:Nomad遭攻击后近2亿美元迅速撤出,到底发生了什么?

原作者:samczsum,Paradigm研究合伙人
编译:城东邹公,MarsBit

编者注:跨链解决方案 Nomad 于 2022 年 4 月宣布完成 2200 万美元种子轮融资,Polychain 领投,投后估值为 2.25 亿美元。Nomad 旨在通过 Optimistic 机制实现一种不依赖大量外部验证的非传统跨链通信。据链上数据分析网站 DefiLlama 显示,跨链解决方案 Nomad被攻击后, TVL 中超过 1.9 亿美元的加密货币在几小时内被撤出,钱包中目前仅剩 4502 美元。

1.Nomad 刚刚在 Web3 有史以来最混乱的黑客攻击之一中,被榨干了超过 1.5 亿美元。这究竟是如何发生的,根源是什么?请让我带你一探究竟。

WBTC

2.这一切都始于@officer_cia 在 ETH安全Telegram 频道中分享@spreekaway的推文。虽然我当时不知道发生了什么,但离开桥的资产数量之多显然是不好的迹象。

WBTC

3.我的第一个想法是代币的小数点配置有误。毕竟,桥上似乎正在运行“发送 0.01 WBTC,返还 100 WBTC”的促销活动。

WBTC

4.然而,在 Moonbeam 网络上进行了繁琐痛苦的手动挖掘之后,我确认虽然 Moonbeam 交易确实桥接了 0.01 WBTC,但不知何故,以太坊交易桥接了 100 WBTC 。

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

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

WBTC

WBTC

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

WBTC

6.在这一点上,有两种可能性。要么是在较早的区块中单独提交了证明,要么是 Replica 合约存在严重错误。但是,绝对没有迹象表明,最近有什么东西被验证。

WBTC

7.这只剩下一种可能性——副本合约存在致命缺陷。但是怎么做?快速浏览表明提交的消息必须属于可接受的根。否则,第 185 行的校验将失败。

WBTC

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

WBTC

9.尴尬的是

WBTC

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

WBTC

WBTC

11.这就是被黑客攻击得如此混乱的原因——你不需要了解 Solidity 或 Merkle Trees 或类似的东西。你所要做的就是找到一个有效的交易,用你的地址找到/替换对方的地址,然后重新广播它。

12.一言概之,团队在例行升级将零哈希标记为有效根,这埋下了允许在 Nomad 上欺骗消息的恶果。攻击者滥用它来复制/粘贴交易,并在疯狂的混战中迅速耗尽了桥协议资产。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2022年8月2日 下午12:46
下一篇 2022年8月2日 下午12:46

相关推荐

编译|Paradigm研究合伙人:Nomad遭攻击后近2亿美元迅速撤出,到底发生了什么?

星期二 2022-08-02 12:46:23

编者注:跨链解决方案 Nomad 于 2022 年 4 月宣布完成 2200 万美元种子轮融资,Polychain 领投,投后估值为 2.25 亿美元。Nomad 旨在通过 Optimistic 机制实现一种不依赖大量外部验证的非传统跨链通信。据链上数据分析网站 DefiLlama 显示,跨链解决方案 Nomad被攻击后, TVL 中超过 1.9 亿美元的加密货币在几小时内被撤出,钱包中目前仅剩 4502 美元。

1.Nomad 刚刚在 Web3 有史以来最混乱的黑客攻击之一中,被榨干了超过 1.5 亿美元。这究竟是如何发生的,根源是什么?请让我带你一探究竟。

WBTC

2.这一切都始于@officer_cia 在 ETH安全Telegram 频道中分享@spreekaway的推文。虽然我当时不知道发生了什么,但离开桥的资产数量之多显然是不好的迹象。

WBTC

3.我的第一个想法是代币的小数点配置有误。毕竟,桥上似乎正在运行“发送 0.01 WBTC,返还 100 WBTC”的促销活动。

WBTC

4.然而,在 Moonbeam 网络上进行了繁琐痛苦的手动挖掘之后,我确认虽然 Moonbeam 交易确实桥接了 0.01 WBTC,但不知何故,以太坊交易桥接了 100 WBTC 。

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

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

WBTC

WBTC

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

WBTC

6.在这一点上,有两种可能性。要么是在较早的区块中单独提交了证明,要么是 Replica 合约存在严重错误。但是,绝对没有迹象表明,最近有什么东西被验证。

WBTC

7.这只剩下一种可能性——副本合约存在致命缺陷。但是怎么做?快速浏览表明提交的消息必须属于可接受的根。否则,第 185 行的校验将失败。

WBTC

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

WBTC

9.尴尬的是

WBTC

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

WBTC

WBTC

11.这就是被黑客攻击得如此混乱的原因——你不需要了解 Solidity 或 Merkle Trees 或类似的东西。你所要做的就是找到一个有效的交易,用你的地址找到/替换对方的地址,然后重新广播它。

12.一言概之,团队在例行升级将零哈希标记为有效根,这埋下了允许在 Nomad 上欺骗消息的恶果。攻击者滥用它来复制/粘贴交易,并在疯狂的混战中迅速耗尽了桥协议资产。