Wintermute - 翻车



在交易商Wintermute眼中,杯子一定是半空而非半满的。他们悲剧的损失了2000万OP通证,在事故发生时价值2760万美元。

这些资金是由Optimism基金会按照约定在OP通证公开发行前发送给Wintermute的,为成为做市商做准备。

Wintermute提供其在以太坊上多重签名地址作为Optimism上的接收地址 – 然而,他们后知后觉的发现,自己对这个地址并没有控制权。

据Optimism基金会的公告,Wintermute确认收到了两笔测试交易,首先是1个OP,然后是100万个OP,但他们竟然没有检查自己是否能控制资金。

5月27日,在第二次测试交易后不久,剩余的1900万OP也被发送。

据Wintermute的声明,他们在5月30日通知Optimism基金会这个乌龙。

6月1日,尽管即将流通的OP供应量的近10%都处于无主状态,但OP的发行还是照常进行。

6月5日,一个匿名人士巧取了无主资金的控制权。

黑客是如何获得控制权的?

特别感谢:yoav.eth, kelvinfichter, banteg

一旦代币被发送了,它们就在天上飞啊飞,谁捡到归谁......

一个小提示,Wintermute提供的地址对应于主网上Gnosis Safe(一个去中心化数字资产”保险箱”)的一个代理,但它没有在Optimism上部署合约。

没人能够以EOA的形式控制这个地址,这需要私钥。

但有一种方法可以控制资金:谁都可以部署一个Gnosis Safe代理来控制该地址。

然而这并不是一件容易的事

Wintermute表示:

在咨询了Optimism和Gnosis Safe团队后,Wintermute做出评估,认为这些资金有可能被收回,但除了Wintermute以外,没有人可以收回这些资金。评估结果还表明,回收资金风险很高,只能试一次,不成功便成仁,还需要Gnosis的支持。回收工作定于6月7日进行。很显然,只有Wintermute可以回收资金的假设被证明是错误的。

由于Wintermute在主网上的Gnosis Safe是在2020年创建的,它使用旧版本的ProxyFactory合约部署代理,其中包括过时的 create 操作码,而不是新版的 create2

使用 create 操作码,部署的代理地址只依赖于ProxyFactory合约的地址和nonce(解密用的随机数)。这意味着攻击者可以在Optimism上重放部署合约的过程(将自己设置为保险箱所有者),直到撞出的nonce与最初部署时的nonce相同,这时一个匹配的代理地址就会被创建出来。

在批量运行每次部署162个保险箱地址后,黑客最终实现了这一目标,在一笔交易中创建了匹配地址。

黑客用于创建ProxyFactory合约地址是在6月1日经由隐私转账平台Tornado Cash充值的。

Wintermute在以太坊的多重签名地址:0x4f3a120e72c76c22ae802d129f599bfdbc31cb81

Optimism上被窃取资金的地址:0x4f3a120e72c76c22ae802d129f599bfdbc31cb81

到目前为止,已有100万OP被发送到黑客的EOA,并以720ETH的价格出售;另外还有100万OP被发送到Vitalik的地址。

正如yoav.eth所指出的,黑客的时机耐人寻味:

7天前用Tornado充值

然后部署合约,等待了4天,才劫持了wintermute的代理。

为什么要等4天?

如果他想确保战果,为什么要给wintermute额外的时间来试图自救?

剩余的1800万OP还没有被抛售,这是由于缺乏流动性还是黑客打算归还资金?

Wintermute并不指望第二种可能性:

这有可能是一个白帽攻击,在这种情况下,剩余的资金有可能被收回。然而,我们目前的操作前提是情况并非如此。

与此同时,Optimism基金会已经又向Wintermute提供了2000万个OP,以履行其职责,能够继续做市。

抛开Wintermute悲剧的资产负债表,此次事故引起的问题其实更为深远。

OP流通量的近10%掌握在一个黑客手中,这对Optimism的治理有潜在威胁,这一点基金会很清楚

如果他们改变主意,选择"网络升级......以停止这些OP代币的流动",这将成为一个令人担忧的先例。

虽然这个乌龙在OP的发行日就被标记出来,但社区似乎忽略了警报。不过,这条推文是在黑客充值自己地址后的几个小时才发布的,所以不太可能是给黑客提供了信息。

虽然补偿2000万的OP对于像Wintermute这样的大型做市商来说不是问题,但这次事件的粗心大意令人警醒。

这些资金竟然在在一个无主的地址中放置了9天。

在困境中的市场,像这样的行为让人很难保持乐观。

如果您喜欢我们的工作,请考虑通过Gitcoin Grant向我们捐赠。


分享本文

REKT作为匿名作者的公共平台,我们对REKT上托管的观点或内容不承担任何责任。

捐赠 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

声明:

REKT对我们网站上发布的或与我们的服务相关的任何内容不承担任何责任,无论是由我们网站的匿名作者,还是由 REKT发布或引起的。虽然我们为匿名作者的行为和发文设置规则,我们不控制也不对匿名作者在我们的网站或服务上发布、传输或分享的内容负责,也不对您在我们的网站或服务上可能遇到的任何冒犯性、不适当、淫秽、非法或其他令人反感的内容负责。REKT不对我们网站或服务的任何用户的线上或线下行为负责。