背景
6月9日,Optimism与Wintermute双双发布公告,向社区披露了一起2000万OP代币丢失的事件。Optimism委托了Wintermute来为OP在二级市场上提供流动性服务,同时将向Wintermute提供2000万枚OP代币。为了接收这笔代币,Wintermute给了Optimism一个多签地址,在Optimism测试发送了两笔交易且Wintermute确认无误后,Optimism将2000万OP转移到了该地址。在Optimism转完币之后,Wintermute却发现自己没办法控制这些代币,因为他们所提供的多签地址暂时只部署在了以太坊主网上,尚未向Optimism网络部署。Wintermute立即启动了补救操作,但已有攻击者察觉到了这一漏洞,并抢在Wintermute之前将多签部署到了Optimism网络的该地址之上,成功控制了这2000万代币。那么问题来了,为什么会出现这种漏洞?
ETH跌破3200美元关口 日内跌幅为4.87%:火币全球站数据显示,ETH短线下跌,跌破3200美元关口,现报3199.0美元,日内跌幅达到4.87%,行情波动较大,请做好风险控制。[2021/9/20 23:38:01]
前置知识
首先需要确定交易签名是否符合标准,符合标准的签名会对9个RLP编码元素(nonce,gasprice,gas,to,value,data,chainid,0,0)进行哈希,其中包含了chainid,因此符合标准的签名v值就为{0,1}+chainid*2+35。而对不符合标准的签名,其只对6个元素进行哈希(nonce,gasprice,gas,to,value,data),因此签名后v值为{0,1}+27。而不同的链会定义有不同的chainid,不同的chainid会得到不同的v值。根据ECDSA我们知道在v值不同的情况下,就算r与s值相同,签名所还原出的公钥也是不同的。因此对于符合标准的交易是无法在其他链上成功进行重放的。
OKT跌破200美元关口 日内跌幅为9.82%:欧易OKEx数据显示,OKT短线下跌,跌破200美元关口,现报199.44美元,日内跌幅达到9.82%,行情波动较大,请做好风险控制。[2021/5/9 21:41:24]
值得一提的是在以太坊伦敦升级时实施的引入了新的交易格式0x02||RLP(),chainid是单独编码的,而不包含在签名v值中了,签名v值只是作为一个简单的奇偶校验位,因此当前交易签名得到的v值变为0或1。
交易重放
在我们了解完以上交易签名构造后我们就可以很清晰的知道签名v值为27或28是可以在不同链上被重放的。那么该如何在不同链上进行重放呢?这与我们发送交易并无不同,只需要将原始交易内容再其他链上进行发送即可。
Solana确认总流通量近2000万 向做市商借出的1136万SOL代币不锁定:金色财经报道,针对持币人对公链项目Solana流通量的质疑,Solana团队发布公告,确认Solana基金会已经向做市商借出1136万枚代币,向做市商借出的这些代币“不锁定”。Solana团队还表示,过去谈及该项目流通量时,未包括这1136万枚代币,但是未来提供流通量数据时,将会把这1136万枚借给做市商的代币包括在内。
此前Solana团队公示Solana代币总流通量约为826万(包括Coinlist拍卖的800万枚代币和空投的26万枚代币),加上1136万枚借给做市商的代币之后,Solana目前准确的流通量应该在1962万枚左右。[2020/4/28]
以Wintermute2000万个OP代币被窃取事件为例,攻击者在此次事件中重放了GnosisSafe部署Factory合约的交易。我们在这里尝试重放GnosisSafeDeployer3的nonce为3的交易。
行情 | BTC突破10200美元:火币全球站数据显示,BTC刚刚突破10200美元,现报10213.58美元,日内涨幅为0.79%。行情波动较大,请做好风险控制。[2020/2/20]
一种较为简单的方法是先通过Etherscan获取原始交易:
然后直接通过Optimistic的eth_sendRawTransaction
(https://eth.wiki/json-rpc/API)接口进行发送即可。
若无法直接获取到原始交易内容,我们可以先通过eth_getTransactionByHash
(https://eth.wiki/json-rpc/API)接口获取交易内容。
再对交易内容进行RLP编码后得到原始交易内容:
然后再通过Optimistic的eth_sendRawTransaction
(https://eth.wiki/json-rpc/API)接口进行发送即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。