2000万OP被盗事件安全启示:多签钱包使用者需警惕哪些风险?_ALA:ALFweb3Project

6月9日,Optimism在社交媒体上公布,由于与加密货币做市商Wintermute合作过程中的沟通与技术失误,目前已有2000万枚OP被黑客控制。起初,由Optimism基金会向Wintermute发送2000万枚OP用于做市,而后Wintermute发现其提供的接收地址是Layer1地址,在Wintermute将其转向Layer2前,攻击者已抢先使用不同的初始化参数将其部署。截至目前,黑客已抛售约100万枚被盗OP。对此事件,以太坊开发者KelvinFichter解释了漏洞被攻击的原因,他表示,智能合约账户与EOA不同,普通EOA用户可以访问任意EVM链的账户,但智能合约账户不能。以下文字整理于KelvinFichter在社交媒体的发言。需要说明,此事件不是Optimism或GnosisSafe中任何漏洞的结果,而是源于在旧版本的GnosisSafe中做出的安全假设。旧版本的GnosisSafe工厂合约是通过没有链ID的交易部署的。这意味着可以在以太坊以外的链上重置这些交易。在某些方面,这真的很有用。这意味着可以将同一工厂部署到每条链上同一地址上。正如现在工厂被部署到Optimism。不幸的是,在使用这个较旧的工厂合约时,GnosisSafeUI有时会使用createProxy函数,该函数通过CREATE而不是CREATE2创建多重签名。与CREATE2不同,通过CREATE创建的合约地址不是基于用于创建合约的代码,而仅基于创建者地址的nonce。这意味着攻击者可以将旧的Safe工厂部署到Optimism并开始重新触发createProxy函数以在L2上创建多重签名。

但是,由于createProxy使用CREATE而不是CREATE2,因此攻击者能够初始化这些多重签名,从而使它们归攻击者所有。用户通常假设他们可以在以太坊上访问的任何帐户也可以在其他基于EVM的链上访问。对于EOA账户,这通常是正确的。但这不一定适用于智能合约账户。可以使用完全不同的代码在不同链上的相同地址创建合约,从而产生完全不同的所有者。像这样的误解会在现实世界中产生严重的后果。上周,Wintermute接受了2000万个OP代币的贷款,借给他们认为可以在L2上访问的L1多重签名钱包。这个L2地址是攻击者后来部署的多重签名之一。这些是多链世界的成长之痛。很不幸,但它强调了为多链用户设计系统的重要性。CREATE2和确定性部署至关重要,尤其是对于合约钱包。如果你在以太坊上使用多重签名钱包,我强烈建议你花时间了解钱包的安全属性,以及你是否会在以太坊以外的链上控制该钱包。原地址

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

金智博客

[0:62ms0-4:426ms