背景
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万代币。那么问题来了,为什么会出现这种漏洞?
欧洲央行巨型欧元雕塑赞助商更换为加密公司并将在底座添加加密货币符号:金色财经报道,位于法兰克福金融区中心的欧洲央行前总部巨型欧元雕塑因为赞助银行退出而面临被拆除风险,但据法兰克福文化委员会透露,加密公司 Caiz 已经成为欧洲央行巨型欧元雕塑的新赞助商。据悉,该欧元雕塑在 2001 年欧元纸币和硬币发行前不久被建造,Caiz 首席执行官 Joerg Hansen 透露,他们将在该雕塑底座突出显示加密货币标志,这表示“加密货币对欧元没有威胁,欧元将永远存在”。(financialexpress)[2022/9/28 5:57:13]
前置知识
美SEC向Dragonchain提起诉讼:金色财经报道,根据美国西区地方法院提交的一份文件,美国证券交易委员会(SEC)已对区块链初创公司Dragonchain提起诉讼,称其未能在五年内对超过1600万美元的初始代币发行(ICO)进行注册。投诉称,首席执行官John Roets和三个Dragonchain相关公司违反了《证券法》,在2017年的ICO中通过出售Dragon(DRGN)代币筹集了数百万美元。据SEC称,该公司随后将资金投入其营销和开发活动。
总部位于西雅图的Dragonchain是一家由Disney于2017年创立的企业区块链初创公司,2018年,在对SEC的监管打击感到担忧之后,该公司迫使其附属项目之一lagon归还ICO投资者的资金。[2022/8/17 12:29:33]
首先需要确定交易签名是否符合标准,符合标准的签名会对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值相同,签名所还原出的公钥也是不同的。因此对于符合标准的交易是无法在其他链上成功进行重放的。
ZKSync网络每笔交易的Gas费达0.03美元:金色财经消息,L2Fees数据显示,目前ZKSync网络进行每笔交易的平均Gas费用约为0.03美元。此外Arbitrum网络发送ETH的Gas费用约为0.01美元。[2022/8/14 12:24:59]
值得一提的是在以太坊伦敦升级时实施的引入了新的交易格式0x02||RLP(),chainid是单独编码的,而不包含在签名v值中了,签名v值只是作为一个简单的奇偶校验位,因此当前交易签名得到的v值变为0或1。
交易重放
在我们了解完以上交易签名构造后我们就可以很清晰的知道签名v值为27或28是可以在不同链上被重放的。那么该如何在不同链上进行重放呢?这与我们发送交易并无不同,只需要将原始交易内容再其他链上进行发送即可。
动态 | 可筛选出受害者加密资产的恶意广告软件已影响200个安卓应用程序:据bitcoinexchangeguide报道,许多安全专家最近发现了一种新型广告软件,被安全公司Check Point称为“SimBad”。到目前为止,该恶意软件似乎已经影响了可在谷歌Play Store下载的200个安卓应用程序。一旦被下载到智能手机上,该恶意软件就会退回到后台并在手机开机状态时正常运行。该恶意软件会“在后台运行网址列表”,甚至可以逐步筛选出受害者的加密资产。谷歌尚未就此事发布声明。[2019/3/16]
以Wintermute2000万个OP代币被窃取事件为例,攻击者在此次事件中重放了GnosisSafe部署Factory合约的交易。我们在这里尝试重放GnosisSafeDeployer3的nonce为3的交易。
一种较为简单的方法是先通过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)接口进行发送即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。