背景
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万代币。那么问题来了,为什么会出现这种漏洞?
Shardeum正寻求以2亿美元估值进行2000万至3000万美元融资:8 月 23 日消息,据TechCrunch援引消息人士报道,印度加密货币交易平台 WazirX 联合创始人 Nischal Shetty 正在为公链项目 Shardeum 寻求以 2 亿美元估值进行 2000 万至 3000 万美元融资,Spartan Group、Struck Crypto、Big Brain Holdings 和 Cogitent Ventures 将参与此次融资。
据报道,Shardeum 网络将通过分片技术实现并行处理更多的交易。目前该网络正进行测试网测试,具有 EVM 兼容机制并使用权益证明共识。[2022/8/23 12:43:18]
前置知识
2021年全球金融科技融资额有望突破1200亿美元:11月3日消息,全球金融科技公司第三季度通过1185笔交易筹集了311亿美元,仅次于二季度创纪录的368亿美元,全年迄今融资额已达947亿美元,仅比过去两年总额相加少2亿美元。预计第四季度融资活动将推动全球融资额突破1200亿美元大关。94笔逾1亿美元的超级融资占总融资额的64%。今年共有257笔超级融资,是去年113笔的两倍多。目前全球有206家金融科技独角兽,仅第三季度就新增43家,最大的包括Stripe(950亿美元)、Klarna(456亿美元)和Revolut(330亿美元)。美国数量最多,其次是亚洲和欧洲。(BusinessInsider)[2021/11/3 6:28:56]
首先需要确定交易签名是否符合标准,符合标准的签名会对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值相同,签名所还原出的公钥也是不同的。因此对于符合标准的交易是无法在其他链上成功进行重放的。
数字资产保险公司Nayms完成200万美元种子轮融资:英国伦敦保险科技创业公司Nayms已完成由XBTO牵头的150万英镑(200万美元)种子轮融资,其他投资机构包括Coinbase Ventures、Maven11和Insurtech Gateway。Nayms致力于将保险技术应用于数字资产领域,允许投资者借助智能合约抵押诸如电子盗窃或钓鱼攻击等加密货币风险。(Decrypt)[2021/1/20 16:37:50]
值得一提的是在以太坊伦敦升级时实施的引入了新的交易格式0x02||RLP(),chainid是单独编码的,而不包含在签名v值中了,签名v值只是作为一个简单的奇偶校验位,因此当前交易签名得到的v值变为0或1。
BTC全网未确认交易笔数最高未超过2000:据最新数据,BTC全网未确认交易笔数拥堵时最高未突破2000,最高为1783笔,目前暂报253笔。[2018/4/27]
交易重放
在我们了解完以上交易签名构造后我们就可以很清晰的知道签名v值为27或28是可以在不同链上被重放的。那么该如何在不同链上进行重放呢?这与我们发送交易并无不同,只需要将原始交易内容再其他链上进行发送即可。
以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)接口进行发送即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。