迪华门户社区 主页 区块链 查看内容

Paradigm 研究员:5.66 亿美元 BNB 被盗全过程

2022-10-7 00:00| 发布者: 習慣成型| 查看: 1004| 评论: 39|原作者: 習慣成型|来自: https://blockcast.it/2022/10/07/how-an-attacker-stole-2-million-bnb-from-the-binance-bridge/

摘要: 原文作者:samczsun,Paradigm 研究员

原文作者:samczsun,Paradigm 研究员

原文来源:Twitter

编译:秦晓峰,ODAILY 星球日报


10 月 7 日上午,BNB Chain 跨链桥 BSC Token Hub 遭遇攻击。骇客利用跨链桥漏洞分两次共获取 200 万枚 BNB,价值约 5.66 亿美元。(注:BSC Token Hub 是 BNB 信标链(BEP2)和 BNB 链(BEP20 或 BSC)之间的跨链桥。)

消息一出,BNB 价格在 2 小时内一度下跌近 5%,跌至 278.7 美元低点,撰文时报 285.34 美元,24 小时跌幅 3.2%。

根据 BNB Chain 的说法,从 BSC 提取的资金初步估计在 1 亿美元至 1.1 亿美元之间。并且,Tether 也在第一时间将骇客地址列入黑名单,BNB Chain 官方表示,「感谢社群和我们的内部和外部安全合作夥伴,估计有 700 万美元已经被冻结。」

币安创办人  CZ 在推特上发文表示,币安已要求所有验证者暂停 BSC 网络,用户的资金是安全的,对于给用户带来的不便深表歉意,并将相应地提供进一步的更新。

针对具体的攻击方式,Paradigm  研究员 Samczsun 发文表示,链上数据及相关代码显示,BSC 跨链桥的验证方式存在 BUG,该 BUG 可能允许攻击者伪造任意消息;本次攻击中,攻击者伪造讯息通过了 BSC 跨链桥的验证,使跨链桥向攻击者地址发送了 200 万枚 BNB。

Samczsun 分析文章如下:

(1)五小时前,攻击者从 Binance Bridge 窃取了 200 万 BNB(约 5.66 亿美元)。此后我一直在与多方密切合作致力于揭示这一切如何发生的。

币安漏洞

(2)事情的起因是 @zachxbt 突然把攻击者的地址发给了我。当我点击进去的时候,我看到了一个价值数亿美元的帐户;要么是有项目 Rug Pull 跑路,要么就是有大规模的骇客攻击正在进行中。

币安漏洞

(3)一开始,我以为 @VenusProtocol 又被骇了。然而,很快我就确定了攻击者「真的」向 Venus 存入了超过 2 亿美元。这时,我就需要弄清楚这些资金的来源。

币安漏洞

(4)答案是,攻击者以某种方式说服了币安跨链桥,直接给他们(骇客)发送了 1,000,000 BNB,而且是两次。

币安漏洞

(5)要么是币安推出 Web3 有史以来最大的「礼包」,要么是攻击者发现了一个严重的漏洞。我首先将攻击者的交易与合法提款进行比较。我注意到的第一件事是攻击者使用的高度始终相同——110217401,而合法提款使用的高度要大得多,例如 270822321。

币安漏洞

币安漏洞

(6)我还注意到,攻击者的证明明显短于合法提款的证明。这两个事实使我确信,攻击者已经找到了一种方法来伪造该特定区块(110217401)的证明。现在,我必须弄清楚这些证明是如何工作的。

币安漏洞

(7)在币安上,有一个特殊的预编译合约用于验证 IAVL 树。如果你对 IAVL 树一无所知,也不要担心,因为有 95% 的内容我也不懂。幸运的是,你和我所需要的只是知道这剩下的 5%。

币安漏洞

(8)基本上,当你验证一个 IAVL 树时,你指定了一个「操作」列表。币安跨链桥通常需要两个操作:「iavl:v」操作和「multistore」操作。请参考它们的实现(implementation)。

(9)为了伪造证明,我们需要两个操作都成功,并且我们需要最后一个操作(multistore)返回一个固定值(指定块的哈希值:110217401)。

(10)通过查看 implementation,我们可以发现,操纵根哈希是不可能的,或者非常困难。这意味著,我们需要输入值等于其中一个提交 ID。

币安漏洞

币安漏洞

(11)「multistore」操作的输入值是「iavl:v」操作的输出值。这意味著,我们想以某种方式控制这里的根变量,同时仍然通过值验证。

币安漏洞

币安漏洞

(12)那么如何计算根哈希?它发生在一个名为 COMPUTEHASH 的函数中。在非常高的层次上,它递归地遍历每条路径和叶节点并进行大量的哈希运算。

(13)实际上,实现细节并不重要,重要的是,由于哈希函数的工作方式,我们基本上可以肯定地说,任何(path, nleaf)对都会产生唯一的哈希。如果我们想伪造证据,这些就得保持不变。

(14)查看证明在合法交易中的布局方式,我们看到它的路径很长,没有内部节点,只有一个叶节点,这个叶节点包含我们恶意载荷的哈希值!如果我们不能修改这个叶节点,那么我们需要添加一个新的叶节点。

币安漏洞

(15)当然,如果我们添加一个新的叶节点,我们还需要添加一个新的内部节点来匹配。

币安漏洞

(16)现在我们只需要面对最后一个障碍。我们如何真正让 COMPUTEHASH 返回我们想要的根哈希?好吧,请注意,最终我们将需要一个包含非零右哈希的路径。当我们找到一个匹配时,我们断言它与中间根哈希匹配。

币安漏洞

(17)让我们稍微检测一下代码,这样我们就可以弄清楚我们需要什么哈希,然后剩下的就是把它们放在一起,我们将采用合法证明并对其进行修改,以便:

1)我们为伪造的有效负载添加一个新叶节点;

2)我们添加一个空白内部节点以满足证明者;

3)我们调整我们的叶节点以使用正确的根哈希提前退出。

币安漏洞

(18)值得注意的是,这不是攻击者使用的确切方法。他们的证明路径要短得多,我不确定他们究竟是如何生成的。但是,漏洞利用的其馀部分是相同的,我相信展示了如何从头开始构建它是有价值的。

(19)总之,币安跨链桥验证证明的方式存在一个错误,该错误可能允许攻击者伪造任意消息。幸运的是,这里的攻击者只伪造了两条消息,但损害可能要严重得多。


(以上内容获合作夥伴 MarsBit 授权节录及转载,原文连结 | 出处:ODaily 星球日报

声明:文章仅代表作者个人观点意见,不代表区块客观点和立场,所有内容及观点仅供参考,不构成投资建议。投资者应自行决策与交易,对投资者交易形成的直接间接损失作者及区块客将不承担任何责任。


路过

雷人

握手

鲜花

鸡蛋
在线影院 萝莉x视频