mrpolymath
mrpolymath
Share Dialog
Share Dialog

Subscribe to mrpolymath

Subscribe to mrpolymath
<100 subscribers
<100 subscribers
几天前,刚完成空投的Layer 2龙头Optimism发生了一起失窃事件,其原本要转账给做市商Wintermute的2000万代币不翼而飞。这些代币按照目前市值,价值约2000万美金。
TL; DR
简单的说,Optimism将代币转到Layer 2的上的多签钱包(用Gnosis Safe创建),但做市商Wintermute却在Ethereum用Gnosis Safe创建了一个多签钱包,该钱包并不能操作Optimism上的钱包。而黑客利用Gnosis Safe创建钱包是基于一个顺序nonce的漏洞,在一万多次尝试后成功创建对应地址,并将钱包中的代币全部转走。
Full Story
Wintermute在Ethereum上的多签地址是通过一个561天前的旧版本factory contract创建的,合约开头为0x76E2c (版本为 1.1.1)。通过这个合约创建的所有多签地址仅依赖于该合约的nonce,即通过该合约发送的交易数量,顺序递增。

这意味着如果你的多签钱包是通过这个factory contract的第5笔交易部署的,那么任何人通过这个factory contract在其他链上的第5笔交易部署的多签钱包会得到同一个钱包地址。这个成立的前提是在其他链上的factory contract也必须是以0x76E2c开头的。
做市商Wintermute的钱包地址是0x4f3a120E72C76c22ae802D129F599BFDbc31cb81,其在factory contract发起的交易的nonce = 8884,在Ethereum上创建的多签钱包是以0x4f3a开头的。而在Optimism上以0x4f3a开头的多签钱包理论上无法被创建,因为Gnosis Safe团队并没有在Optimism上部署旧版本的factory contract,并且该合约还要和Ethereum上的合约地址相同,即以0x76E2c开头。
唯一可以实现将Optimism上0x4f3a开头的多签钱包代币转出的办法是让Gnosis Safe团队再去部署一个旧版本的factory contract,并且通过该合约进行8884次部署操作,直到创建的多签钱包地址和0x4f3a开头的地址匹配。
事实上做市商Wintermute 在5月30日就把漏洞报告给了Optimism,同时黑客在6月1日已经在Optimism部署了可以批量创建多签钱包的智能合约(每个批次创建162个多签钱包)。当时唯一缺失的条件是旧版本的factory contract。
黑客创建的合约交易为:https://optimistic.etherscan.io/tx/9939703
根据gov.forum的说法,做市商Wintermute和Gnosis Safe团队一起尝试在6月7日修复这个错误,尽管从链上数据来看Gnosis Safe团队在6月5日已经部署了旧版本的factory contract。
真实情况是,6月5日这个合约是黑客部署的,并且在部署完成后的18秒内立即开始调度其在6月1日部署的枚举合约,在1分半的时间内遍历了10000多个nonce数值,并成功匹配到了以0x4f3a开头的多签钱包地址。
黑客部署的旧版本factory contract的交易为 https://optimistic.etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261
黑客利用了Optimism的漏洞,通过重放攻击将Gnosis Safe在Ethereum上部署旧版本factory contract的交易在Optimism上进行了重放,从而实现了以Gnosis Safe团队的身份在Optimism上部署合约。黑客通过向Optimism上Gnosis Safe的deployer地址转账0.1ETH触发了重放攻击。
Ethereum上的factory contract 部署交易https://etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261
黑客得以实现重放攻击是因为EIP-155补丁在Optimism并没有实施,任何人可以重放任何其他EVM链上的交易。只要Optimism的这个补丁没有实施,我们将会看到更多重放攻击带来的危害。
重放攻击的补丁联接:https://eips.ethereum.org/EIPS/eip-155
理论上这个黑客攻击本可以被阻止:这个漏洞事实上在Optimism发行代币之前已经被发现,Optimism团队完全有时间和Gnosis Safe团队一起发起恢复交易,并和Optimism的矿工合作将这些恢复交易进行高优先级确认。
另外,Gnosis Safe团队在新版本的factory contract中,对创建多签钱包地址的逻辑进行了漏洞修复,多签钱包地址由多签钱包的初始化参数决定,而不是交易的nonce。
整个事件不寻常的地方在于,这个黑客是如何找到这个漏洞的。从这个漏洞的实施方法来看,黑客必须对Optimism协议和Gnosis Safe协议有非常深入的了解才能成功执行这一系列的操作。
最后,该事件给我们的警示作用是我们在处理钱包私钥时必须要万分谨慎,并且问题出现时,不要急于进行操作。要仔细分析各个补救方案的利弊,在有十分把握情况下才可以执行。
几天前,刚完成空投的Layer 2龙头Optimism发生了一起失窃事件,其原本要转账给做市商Wintermute的2000万代币不翼而飞。这些代币按照目前市值,价值约2000万美金。
TL; DR
简单的说,Optimism将代币转到Layer 2的上的多签钱包(用Gnosis Safe创建),但做市商Wintermute却在Ethereum用Gnosis Safe创建了一个多签钱包,该钱包并不能操作Optimism上的钱包。而黑客利用Gnosis Safe创建钱包是基于一个顺序nonce的漏洞,在一万多次尝试后成功创建对应地址,并将钱包中的代币全部转走。
Full Story
Wintermute在Ethereum上的多签地址是通过一个561天前的旧版本factory contract创建的,合约开头为0x76E2c (版本为 1.1.1)。通过这个合约创建的所有多签地址仅依赖于该合约的nonce,即通过该合约发送的交易数量,顺序递增。

这意味着如果你的多签钱包是通过这个factory contract的第5笔交易部署的,那么任何人通过这个factory contract在其他链上的第5笔交易部署的多签钱包会得到同一个钱包地址。这个成立的前提是在其他链上的factory contract也必须是以0x76E2c开头的。
做市商Wintermute的钱包地址是0x4f3a120E72C76c22ae802D129F599BFDbc31cb81,其在factory contract发起的交易的nonce = 8884,在Ethereum上创建的多签钱包是以0x4f3a开头的。而在Optimism上以0x4f3a开头的多签钱包理论上无法被创建,因为Gnosis Safe团队并没有在Optimism上部署旧版本的factory contract,并且该合约还要和Ethereum上的合约地址相同,即以0x76E2c开头。
唯一可以实现将Optimism上0x4f3a开头的多签钱包代币转出的办法是让Gnosis Safe团队再去部署一个旧版本的factory contract,并且通过该合约进行8884次部署操作,直到创建的多签钱包地址和0x4f3a开头的地址匹配。
事实上做市商Wintermute 在5月30日就把漏洞报告给了Optimism,同时黑客在6月1日已经在Optimism部署了可以批量创建多签钱包的智能合约(每个批次创建162个多签钱包)。当时唯一缺失的条件是旧版本的factory contract。
黑客创建的合约交易为:https://optimistic.etherscan.io/tx/9939703
根据gov.forum的说法,做市商Wintermute和Gnosis Safe团队一起尝试在6月7日修复这个错误,尽管从链上数据来看Gnosis Safe团队在6月5日已经部署了旧版本的factory contract。
真实情况是,6月5日这个合约是黑客部署的,并且在部署完成后的18秒内立即开始调度其在6月1日部署的枚举合约,在1分半的时间内遍历了10000多个nonce数值,并成功匹配到了以0x4f3a开头的多签钱包地址。
黑客部署的旧版本factory contract的交易为 https://optimistic.etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261
黑客利用了Optimism的漏洞,通过重放攻击将Gnosis Safe在Ethereum上部署旧版本factory contract的交易在Optimism上进行了重放,从而实现了以Gnosis Safe团队的身份在Optimism上部署合约。黑客通过向Optimism上Gnosis Safe的deployer地址转账0.1ETH触发了重放攻击。
Ethereum上的factory contract 部署交易https://etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261
黑客得以实现重放攻击是因为EIP-155补丁在Optimism并没有实施,任何人可以重放任何其他EVM链上的交易。只要Optimism的这个补丁没有实施,我们将会看到更多重放攻击带来的危害。
重放攻击的补丁联接:https://eips.ethereum.org/EIPS/eip-155
理论上这个黑客攻击本可以被阻止:这个漏洞事实上在Optimism发行代币之前已经被发现,Optimism团队完全有时间和Gnosis Safe团队一起发起恢复交易,并和Optimism的矿工合作将这些恢复交易进行高优先级确认。
另外,Gnosis Safe团队在新版本的factory contract中,对创建多签钱包地址的逻辑进行了漏洞修复,多签钱包地址由多签钱包的初始化参数决定,而不是交易的nonce。
整个事件不寻常的地方在于,这个黑客是如何找到这个漏洞的。从这个漏洞的实施方法来看,黑客必须对Optimism协议和Gnosis Safe协议有非常深入的了解才能成功执行这一系列的操作。
最后,该事件给我们的警示作用是我们在处理钱包私钥时必须要万分谨慎,并且问题出现时,不要急于进行操作。要仔细分析各个补救方案的利弊,在有十分把握情况下才可以执行。
No activity yet