加密桥漏洞如何导致 2 亿美元的“去中心化人群抢劫”
加密货币桥接服务 Nomad 将自己描述为“一种可实现安全跨链通信的乐观互操作性协议”,如果兑换成美元,其名义价值为 1.907 亿美元的代币已被耗尽。
“我们正在全天候工作以解决这种情况,并已通知执法部门并保留了领先的区块链情报和取证公司,”该公司通过 Twitter表示。“我们的目标是查明涉及的账户并追踪和追回资金。”
Nomad 允许加密货币持有者在不同的区块链上交易他们的代币,这些区块链是用于跟踪加密资产的分布式公共分类账。
此类桥接服务在代币交易者中代表了一种已知的安全风险。这是以太坊联合创始人 Vitalik Buterin在 Reddit 上思考“桥梁的基本安全限制”。
以下是一些最近被黑的桥梁: Ronin Bridge(6 亿美元);量子比特桥(8000 万美元);虫洞桥(3.2亿美元);Meter.io 桥(440 万美元);和 Poly Network Bridge(返还 6.1 亿美元)。
最后,这是 James Prestwich在 4 月份与 Wired 的谈话:“任何链上资本都会受到 24/7/365 的攻击,因此桥梁将永远是一个受欢迎的目标。”
- Prestwich 是Nomad 的创始人兼首席技术官。
根据 Paradigm 安全研究员“samczsun”的说法,Nomad 被利用是由于人们(有些人没有讽刺意味)称之为“智能合约”的一个漏洞。
巧合的是,在2022 年 6 月 6 日对 Nomad 代码的安全审计 [PDF] 中发现的许多缺陷中似乎都引用了此错误。
标识为“QSP-19 Proving With An Empty Leaf”的报告调用了接受空bytes32
值的验证检查并建议:“验证函数的 _leaf 输入Replica.sol:prove
不为空。”
Nomad 对此建议的回应是驳回,审计师对此回应说:“我们认为 Nomad 团队误解了这个问题。”
验证不充分的代码似乎存在于process()
Nomad ERC20 桥接合约 ( Replica.sol:process
) 中的函数中,位于程序的一部分中,其目的与prove()
审计报告中引用的函数相似。它旨在接受输入值并查看它是否是 Merkle 树的一部分,Merkle 树是一种树状数据结构,将散列数据值存储在其叶节点中。该代码应该检查消息以查看它们是否包含有效的 Merkle 根。
然而,Nomad 团队显然用值 0x00初始化了可信根,这具有验证每条消息的效果。
事实证明,这个错误导致的黑客攻击非常简单,以至于在最初的攻击之后,数十个地址通过复制交易并插入其地址来接收资金来进行模仿盗窃。因此,该事件被描述为“去中心化的人群抢劫”,尽管“去中心化金融”或 DeFi 一词实际上暗示了这一点。
“这就是黑客如此混乱的原因——你不需要了解Solidity或 Merkle Trees 或类似的东西,”通过 Twitter解释道“samczsu” 。“你所要做的就是找到一个有效的交易,用你的地址找到/替换对方的地址,然后重新广播它。”
同时,Nomad 预计至少可以取回一些被盗代币,前提是某些强盗从事保护性盗窃以耗尽资金,以便不太慈善的人可能无法拥有它们。为了与其自我应用的描述“乐观”保持一致,加密货币业务感谢“我们的许多白帽朋友,他们积极行动并保护资金。”
