重入攻击 + 管理漏洞:2000 万枚 OP 被盗事件分析

2022 年 6 月 9 日消息,据 Optimism 与加密货币做市商 Wintermute 透露,2000 万个 Optimism 代币被黑客盗取。6 月 9 日,Optimism 基金会向 Wintermute 授予了 2000 万枚 OP 代币。

交易发送完成后,Wintermute 发现无法访问这些代币,因为提供的地址是他们尚未部署到 Optimism/L2 的 Ethereum/L1 多签地址。该 Optimism/L2 多签地址由黑客部署,2000 枚 OP 代币也被黑客盗取。

5 月 27 日,Optimism 基金会通过多签合约分两次向 Wintermute 的多签合约地址转账 2000 万 OP 代币,并且在 26 日转账 1 枚 OP 代币,3 笔交易如下:

根据交易时间以及交易中 OP 代币数量,我们分析,在 26 日,Optimism 基金会向 Wintermute 多签合约地址转账 1 枚 OP 代币作为测试,Optimism 基金会在 Wintermute 确认收到代币后将 2000 万枚 OP 代币通过连续的两笔交易发送给 Wintermute 多签合约地址。接收地址是 Wintermute 在 Ethereum/L1 上已部署的多签合约地址,因此 Wintermute 仅仅验证是否接收到了代币,但并没有验证该地址在 Optimism/L2 上的所有权,而此时在 Optimism/L2 上并没有实际部署多签合约,这才给了黑客可乘之机。

BSV突破360美元关口 日内涨幅为2.38%:火币全球站数据显示,BSV短线上涨,突破360美元关口,现报360.0631美元,日内涨幅达到2.38%,行情波动较大,请做好风险控制。[2021/5/9 21:41:14]

以上转账交易中的相关地址如下:

(1)Optimism 基金会在 Optimism/L2 上的多签合约地址:

0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0(简记为0x2501)

(2)Wintermute 在 Ethereum/L1 上的多签合约地址(Wintermute Exploiter Multisig):

0x4f3a120E72C76c22ae802D129F599BFDbc31cb81(简记为0x4f3a)

同时,Optimism/L2 上的 0 x4 f3 a 也是黑客部署的多签合约地址。

接下来,我们将从链上交易的角度详细分析一下黑客的攻击行为以及原理。

首先,我们看一下 Optimism/L2 上的 0 x4 f3 a 合约部署交易:

txHash是0x00a3da68f0f6a69cb067f09c3f7e741a01636cbc27a84c603b468f65271d415b

注意到,该合约部署时间是 6 月 5 日,其中 Wintermute/OP Exploiter 是黑客的一个地址,简记为 0 x60 b2。

该交易是如何准确生成 0 x4 f3 a 合约地址的呢?

黑客重放了 3 笔交易,尤其是最后的 Gnosis Safe: Proxy Factory 1.1.1 合约创建的交易,如下所示:

Osasion欧赛区块同步节点触发首期AUC14000枚以上GAS费的分红:据社区联合基金会消息,根据Osasion链上数据监测,截止香港时间2021年4月15日19:10,参与区块同步节点竞选社区达152个,本次参与区块同步节点竞选投票的持币地址即节点数,超14200个,占据已激活MPOS节点的64.22%,候选合格区块同步节点已经达98个,满足100个合格数,将触发区块同步节点竞选首次分红和剥离区块同步节点与超级节点GAS费归集地址,届时,100个区块同步节点的竞选社区,将平均瓜分首期14000枚以上AUC的GAS费,后续GAS费归集每达到1000枚AUC,将触及二次分配。

据悉,超级节点竞选未触及规则适用条件,其分配规则和时间线将与区块同步节点,有明显区别,本次除了确保启动首次采集合格社区均分的合约协议的准确性,将对地址执行切割,确保数据磨损接近于0,若遇时间延缓和不可控调整项,将以公告为准,请耐心等待。[2021/4/15 20:23:44]

(1)Ethereum/L1 上的交易如下:

(2)Optimism/L2上的交易:

通过重放交易,黑客在 Optimism/L2 上面创建了跟 Ethereum/L1 上完全相同(地址与合约代码相同)的 Gnosis Safe: Proxy Factory 1.1.1 合约,其中创建代理合约函数如下:

Gnosis Safe: Proxy Factory 1.1.1 合约使用的是 0.5 版本的 Solidity,使用 new 来创建合约时使用的是 create 命令,而不是 create2。使用 create 命令创建合约,合约地址是 msg.sender 以及 nonce 来计算的。在 Ethereum/L1 上面,创建多签合约 0 x4 f3 a 的 msg.sender 就是 Gnosis Safe: Proxy Factory 1.1.1 的地址,黑客在 Optimism/L2 通过重放交易来创建于 Gnosis Safe: Proxy Factory 1.1.1 合约的主要目的就是为了保证在 Optimism/L2 上创建合约 0x4f3 a 的 msg.sender 与在 Ethereum/L1 上一致,那么黑客可以很方便的通过智能合约(合约 0 xe714)调用 createProxy 函数来创建出地址是 0 x4 f3 a 的合约。在该交易中创建过程如下所示:

另外,合约0xe714的部署是在6月1日的以下交易中完成的:

txHash: 0x69ee67800307ef7cb30ffa42d9f052290e81b3df6d3b7c29303007e33cd1c240

发起交易地址是0x8bcfe4f1358e50a1db10025d731c8b3b17f04dbb(简记为0x8bcf),这也是黑客所持有的地址。同时,这笔交易也是0x8bcf发起的第一笔交易,资金来源于Tornado:

整个过程从时间上看,

(1)5 月 27 日,Optimism 地址 0 x2501 向 Optimism/L2 上的 0 x4 f3 a 地址转账 2000 万 OP,0 x4 f3 a 地址在 Ethereum/L1 上是 Wintermute 的多签合约地址,但此时在 Optimism/L2 上面并没有部署合约;

(2)6 月 1 日,黑客地址 0 x8 bcf 部署合约 0 xe714。

(3)6 月 5 日,黑客通过重放 Ethereum/L1 上的交易创建了 Gnosis Safe: Proxy Factory 1.1.1 合约,其地址与 Ethereum/L1 上一样;然后地址 0x60b2 通过合约 0 xe714 部署了多签合约 0 x4 f3 a,合约所有权归黑客所有,因此 5 月 27 日转入的 2000 万 OP 被黑客盗取。

(4)6 月 5 日,多签合约 0 x4 f3 a 在接收到 2000 万 OP 后,将 100 万 OP 转账给黑客地址 0 x60 b2,然后将 100 万 OP 兑换成了 720.7 Ether。

(5)6月9日,合约0x4f3a将其中的100万OP转账给了账户地址0xd8da,

其他的1800万OP仍然在合约0x4f3a中。

引发本次安全事件的根本原因是交易重放、Solidity旧版本漏洞以及主链和侧链交易签名验证等综合因素,并不是因为项目方合约代码存在漏洞。

另外,针对本次事件,项目方反应不及时、对合约管理不严格等也给了黑客可乘之机;从攻击时间线和攻击准备上看,也不排除OP内部有内鬼串通作案的可能。

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

链链资讯

FTX金色前哨 | PayPal向外部加密钱包敞开大门

PayPal不再是加密货币中的孤岛。 该公司6月7日宣布,在其PayPal账户钱包中持有加密货币的人现在将能够通过外部钱包和交易所发送和接收数字资产。 PayPal一直是一个封闭的系统,客户只能从PayPal本身购买和出售加密货币,并且只能在 PayPal的3200万强大的商户网络中消费。

Ethereum源码解读:你买的NFT到底是什么?

如果你是WEB3加密界的新手,面对众多概念无从入手,那么欢迎你,来对地方了!! 本文围绕标准?ERC721协议,描述了Mint、?safeMint、?transfer等是如何实现资产管理的,并通过解读代码来了解它的安全性设计和以太坊数据上链成本构成。

[0:0ms0-3:639ms