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

慢雾科技Xuất bản vào 2022-06-10Cập nhật gần nhất vào 2022-06-10

Tóm tắt

6月9日,Optimism与Wintermute双双发布公告,向社区披露了一起2000万OP代币丢失的事件。

背景

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

前置知识

首先需要确定交易签名是否符合[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]标准的交易是无法在其他链上成功进行重放的。

值得一提的是在以太坊伦敦升级时实施的[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。

交易重放

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

以Wintermute2000万个OP代币被窃取事件为例,攻击者在此次事件中重放了GnosisSafe部署Factory合约的交易。我们在这里尝试重放GnosisSafeDeployer3的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]

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

参考:

https://eips.ethereum.org/EIPS/eip-155

https://eips.ethereum.org/EIPS/eip-2718

https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm

https://github.com/ethereum/go-ethereum/blob/master/core/types/transaction_signing.go

Nội dung Liên quan

Áp Lực Bán Ra Của Thợ Đào Bitcoin Gần Như Cạn Kiệt – Điều Gì Sắp Diễn Ra

Dữ liệu on-chain gần đây cho thấy áp lực bán ra từ các thợ đào Bitcoin có thể đang cạn kiệt, mở đường cho giai đoạn tăng giá tiếp theo của thị trường. Các nhà phân tích từ XWIN Research Japan nhận định Bitcoin đang bước vào giai đoạn mở rộng giá dẫn đầu bởi nhu cầu, khi cấu trúc thị trường bắt đầu cạn kiệt nguồn cung. Trong quý 1/2026, các thợ đào công khai đã bán ra hơn 32.000 BTC - mức bán ra hàng quý cao nhất từ trước, chủ yếu do ảnh hưởng từ đợt Halving 2024 khi phần thưởng khối giảm từ 6.25 BTC xuống 3.125 BTC. Đồng thời, hash rate tiếp tục tăng khiến lợi nhuận giảm mạnh, buộc nhiều thợ đào phải bán BTC để duy trì dòng tiền. Mặc dù chỉ số MPI vẫn âm và dự trữ của thợ đào tiếp tục giảm, nhưng cường độ bán ra đã yếu đi đáng kể. Điều này cho thấy giai đoạn bán ép buộc có thể sắp kết thúc. Theo chu kỳ lịch sử, Bitcoin thường chuyển từ giai đoạn cạn kiệt nguồn cung sang tăng trưởng dựa trên nhu cầu. Do đó, giá trong tương lai sẽ phụ thuộc nhiều hơn vào các yếu tố như dòng tiền ETF, sự tham gia của tổ chức và điều kiện kinh tế vĩ mô. Tại thời điểm đưa tin, Bitcoin giao dịch ở mức $77.169, tăng 2.69% trong 24 giờ qua.

bitcoinist59 phút trước

Áp Lực Bán Ra Của Thợ Đào Bitcoin Gần Như Cạn Kiệt – Điều Gì Sắp Diễn Ra

bitcoinist59 phút trước

Giao dịch

Giao ngay
Hợp đồng Tương lai
活动图片