2000 万 OP 代币被盗关键:交易重放_INT:MIS

背景

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 万代币。那么问题来了,为什么会出现这种漏洞?

DCG已半价出售约25%灰度以太坊信托基金股份,筹款2200万美元:2月7日消息,据英国《金融时报》援引美国证券备案文件称,Digital Currency Group(DCG)开始出售其在其子公司灰度加密信托基金中的股份,以筹集资金偿还Genesis债权人资金。

文件显示,自1月24日以来,DCG主要出售了约25%的以太坊信托基金,已筹集高达2200万美元资金,售价约每股8美元,远低于每股16美元的市价。此外,DCG还开始出售其LitecoinTrust、Bitcoin Cash Trust、Ethereum ClassicTrust和Digital Large Cap Fund中较小的股份。[2023/2/7 11:51:59]

前置知识

RENGA Black Box系列NFT近24小时交易额增幅超200%:金色财经消息,OpenSea数据显示,RENGA Black Box系列NFT近24小时交易额为410 ETH,24小时交易额增幅达298%。近24小时交易额排名位列OpenSea第1。[2022/8/29 12:54:23]

首先需要确定交易签名是否符合 [EIP155] 标准,符合 [EIP155] 标准的签名会对 9 个 RLP 编码元素 (nonce, gasprice, gas, to, value, data, chainid, 0, 0) 进行哈希,其中包含了 chainid,因此符合 [EIP155] 标准的签名 v 值就为 {0,1} + chainid * 2 + 35。而对不符合 [EIP155] 标准的签名,其只对 6 个元素进行哈希 (nonce, gasprice, gas, to, value, data),因此签名后 v 值为 {0,1} + 27。而不同的链会定义有不同的 chainid,不同的 chainid 会得到不同的 v 值。根据 ECDSA 我们知道在 v 值不同的情况下,就算 r 与 s 值相同,签名所还原出的公钥也是不同的。因此对于符合 [EIP155] 标准的交易是无法在其他链上成功进行重放的。

数据:比利时投资者因加密和外汇损失近1200万美元:比利时金融服务和市场管理局(FSMA)报告显示,2019年5月至2020年9月期间,比利时投资者因欺诈平台(包括处理加密货币的平台)损失超1000万欧元(约合1180万美元)的资金。FSMA报告称,这些平台利用社交媒体上的虚假广告受害者,这些广告上有名人的照片,引导他们向其提供信息。“这些平台经常使用非常激进的方法,试图说服你投入更多资金。他们还会试图说服你让他们远程控制你的电脑,以便能够进行某些支付。”(Cointelegraph)[2020/10/12]

值得一提的是在以太坊伦敦升级时实施的 [EIP2718] 引入了新的交易格式 0x02 || RLP([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s]),chainid 是单独编码的,而不包含在签名 v 值中了,签名 v 值只是作为一个简单的奇偶校验位,因此当前交易签名得到的 v 值变为 0 或 1。

行情 | BTC重回8200美元:火币全球站数据显示,BTC已重回8200美元,现报8206.79美元,24小时跌幅为2.39%。行情波动较大,请做好风险控制。[2019/11/19]

交易重放

在我们了解完以上交易签名构造后我们就可以很清晰的知道签名 v 值为 27 或 28 是可以在不同链上被重放的。那么该如何在不同链上进行重放呢?这与我们发送交易并无不同,只需要将原始交易内容再其他链上进行发送即可。

以 Wintermute 2000 万个 OP 代币被窃取事件为例,攻击者在此次事件中重放了 Gnosis Safe 部署 Factory 合约的交易。我们在这里尝试重放 Gnosis Safe Deployer 3 的 nonce 为 3 的交易。

一种较为简单的方法是先通过 Etherscan 获取原始交易:

然后直接通过 Optimistic 的 eth_sendRawTransaction [RPC]

(https://eth.wiki/json-rpc/API) 接口进行发送即可。

若无法直接获取到原始交易内容,我们可以先通过 eth_getTransactionByHash

[RPC](https://eth.wiki/json-rpc/API) 接口获取交易内容。

再对交易内容进行 RLP 编码后得到原始交易内容:

然后再通过 Optimistic 的 eth_sendRawTransaction [RPC]

慢雾科技

个人专栏

阅读更多

金色早8点

Bress

PANews

链捕手

财经法学

成都链安

Odaily星球日报

区块律动BlockBeats

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

水星链

[0:15ms0-1:218ms