北京时间8月2日,成都链安链必应-区块链安全态势感知平台舆情监测显示,跨链通讯协议Nomad遭遇攻击,黑客获利约1.5亿美元。截止发稿前,根据DeFiLlama数据显示,Nomad代币桥中只剩下约5900美元左右。
关于本次攻击事件的来龙去脉,成都链安安全团队第一时间进行了分析。
PART01
加密市场中首次发生的去中心化抢劫?
首先,我们先来认识本次故事主角——Nomad。
Nomad自称能提供安全的互操作性解决方案,旨在降低成本并提高跨链消息传递的安全性,与基于验证者的跨链桥不同,Nomad不依赖大量外部方来验证跨链通信,而是通过利用一种optimistic机制,让用户可以安全地发送消息和桥接资产,并保证任何观看的人都可以标记欺诈并保护系统。
Neo Smart Economy:暂停了链接Neo链的跨链桥服务,用户资产安全:7月2日消息,Neo Smart Economy发推称,几个小时前其暂停了链接Neo链的跨链桥服务,用户资产安全。团队将与Poly Network保持密切沟通以获取进一步信息。[2023/7/2 22:13:22]
而在4月13日,他们也以2.25亿美元估值完成高达2200万美元的种子轮融资,领投方为Polychain。对于一家初创项目而言,数千万美元种子轮融足可谓赢在起跑线上,但是本次攻击之后,不知道项目方会如何处理与“自救”。
Nomad官方推特表示,已得知此事,目前正在调查。
分析:Nomad攻击者利用合约process函数进行提取:金色财经消息,北京时间8月2日中午,成都链安链必应-区块链安全态势感知平台舆情监测显示,跨链通讯协议Nomad遭遇攻击,成都链安安全团队现将解析结果分享如下,通过被攻击合约(0x88a69b4e698a4b090df6cf5bd7b2d47325ad30a3)的转账交易看到,许多地址都进行了攻击。通过找到一笔相关交易,可以到看到攻击者利用了(0xb36f6479b1aa5582ce862bfb6eb94591e1b0e0b977188c2e8ca85699efcd6183)合约中的process函数进行提取。
在process函数中,可以看到合约对_messageHash进行了判断,而输入的messages[_messageHash]为0x000000....时,相当于任何未使用的hash,都可以判断通过。然后跟进acceptableRoot函数,因为_root设置为零(x000000....),而confirmAt[_root]等于1,导致判断恒成立,攻击者就能提取资金。成都链安链必追平台将对被盗资金进行实时监控。[2022/8/2 2:53:05]
关于本次事件,在Web3领域,却引起了争议。
慢雾:跨链互操作协议Nomad桥攻击事件简析:金色财经消息,据慢雾区消息,跨链互操作协议Nomad桥遭受黑客攻击,导致资金被非预期的取出。慢雾安全团队分析如下:
1. 在Nomad的Replica合约中,用户可以通过send函数发起跨链交易,并在目标链上通过process函数进行执行。在进行process操作时会通过acceptableRoot检查用户提交的消息必须属于是可接受的根,其会在prove中被设置。因此用户必须提交有效的消息才可进行操作。
2. 项目方在进行Replica合约部署初始化时,先将可信根设置为0,随后又通过update函数对可信根设置为正常非0数据。Replica合约中会通过confirmAt映射保存可信根开始生效的时间以便在acceptableRoot中检查消息根是否有效。但在update新根时却并未将旧的根的confirmAt设置为0,这将导致虽然合约中可信根改变了但旧的根仍然在生效状态。
3. 因此攻击者可以直接构造任意消息,由于未经过prove因此此消息映射返回的根是0,而项目方由于在初始化时将0设置为可信根且其并未随着可信根的修改而失效,导致了攻击者任意构造的消息可以正常执行,从而窃取Nomad桥的资产。
综上,本次攻击是由于Nomad桥Replica合约在初始化时可信根被设置为0x0,且在进行可信根修改时并未将旧根失效,导致了攻击可以构造任意消息对桥进行资金窃取。[2022/8/2 2:52:59]
Terra研究员FatMan在推特上对Nomad遭遇攻击事件发表评论称:“在公共Discord服务器上弹出的一条消息称,任意一个人都能从Nomad桥上抢了3千到2万美元:所有人要做的就是复制第一个黑客的交易并更改地址,然后点击通过Etherscan发送。这是在真正的加密市场中首次发生的去中心化抢劫。”
Biconomy旗下跨链基础转移设施Hyphen推出2.0版本:金色财经消息,区块链开发工具提供商Biconomy(BICO)旗下跨链基础转移设施Hyphen推出2.0版本。其中任何人都可以为Hyphen流动性池添加最高1万美元流动性来赚取LP奖励;此外它还引入动态费用模型,激励资金从流动性较高的链流动到流动性较低的链,以平衡流动性池;同时它还推出开源机器人,帮助用户进行跨链资金套利;并且还计划增加对BNBChain、Arbitrum和Fantom等网络的支持。(Medium)[2022/3/16 14:00:43]
事实的确如此。
根据Odaily星球日报的报道,在第一个黑客盗窃完成后,这条「成功」经验也在加密社区疯传,被更多用户模仿,趁火打劫。跨链通讯协议Nomad的资产被洗劫一空。
可能是因为过于心急,一些用户忘记使用马甲伪装,直接使用了自己的常用ENS域名,暴露无遗。目前已经有用户开始自发退款,以求避免被起诉。
PART02
-项目方在部署合约时犯了什么错导致被攻击?
本次攻击主要是项目方在部署合约时,把零(0x000000....)的confirmAt设置为1,导致任意一个未使用的_message都可以通过判断,并从合约中提取出对应资产。技术分析如下:
被攻击合约
0x5D94309E5a0090b165FA4181519701637B6DAEBA(存在漏洞利用的合约)
0x88A69B4E698A4B090DF6CF5Bd7B2D47325Ad30A3(遭受损失的金库合约)
由于攻击交易过多,下面依靠其中一笔攻击交易分析为例进行阐述;
1.通过交易分析,发现攻击者是通过调用(0x5D9430)合约中的process函数提取合约中的资金。
2.跟进process函数中,可以看到合约对_messageHash进行了判断,当输入的messages为0x000000....时,返回值却是true。
3.然后跟进acceptableRoot函数,发现_root的值为零(0x000000....)时,而confirmAt等于1,导致判断恒成立,从而攻击者可以提取合约中的资金。
4.后续通过查看交易,发现合约在部署时,就已经初始零(0x000000....)的confirmAt为1,交易可见
PART03
-项目方还能找回被盗资金吗?
针对跨链代币桥攻击导致损失一事,Nomad团队表示,“调查正在进行中,已经联系区块链情报和取证方面的主要公司协助。我们已经通知执法部门,并将夜以继日地处理这一情况,及时提供最新信息。我们的目标是识别相关账户,并追踪和追回资金。”
目前,成都链安安全团队正在使用链必追平台对被盗资金地址进行监控和追踪分析。
PART04
-总结:合约部署需要注意哪些问题?
针对本次事件,成都链安安全团队建议:项目方在合约部署前,需要考虑配置是否合理。部署后,应测试相关功能,是否存在被利用的风险,并且联系审计公司查看初始的参数是否合理。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。