主页 > 新闻快讯 >

Cobo安全团队:ETH硬分叉里的隐藏风险和套利机会

2022-09-29 19:06

前言

随着 ETH 升级 PoS 共识系统,原有的 PoW 机制的 ETH 链在部分社区的支持下成功硬分叉(下文简称 ETHW)。但是,由于某些链上协议在设计之初没有对可能的硬分叉做好准备,导致对应的协议在 ETHW 分叉链存在一定的安全隐患,其中最为严重的安全隐患则是重放攻击。

在完成硬分叉后,ETHW 主网出现了至少 2 起利用重放机制进行的攻击,分别是 OmniBridge 的重放攻击和 Polygon Bridge 的重放攻击。本文将以这两个事件作为案例,分别分析重放攻击对分叉链的影响,以及协议应如何防范此类攻击。

重放的类型

首先,在开始分析之前,我们需要先对重放攻击的类型做一个初步的了解,一般而言,我们对重放攻击分成两类,分别是 交易重放 和 签名消息重放。下面,我们来分别说下这两类重放机制的区别

交易重放

交易重放指的是将在原有链的交易原封不动的迁移到目标链的操作,属于是交易层面上的重放,重放过后交易也是可以正常执行并完成交易验证。最著名的案例莫过于 Wintermute 在 Optimism 上的攻击事件,直接导致了超 2000 万 OP Token的损失。但是在 EIP 155 实施以后,由于交易的签名本身带有 chainId (一种用于链本身区别与其他分叉链的标识符),在重放的目标链 chainId 不同的情况下,交易本身是无法完成重放的。

签名消息重放

签名消息重放区别于交易重放,是针对的用私钥签名的消息 (e.g. Cobo is the best) 进行的重放,在签名消息重放中,攻击者不需要对整个交易进行重放,而只需将签名的消息进行重放即可。在消息签名中,以 Cobo is the best 为例,由于该消息中并不含任何和链相关的特殊参数,所以该消息在签名后理论上是可以在任意的分叉链中均是有效的,可以验签通过。为了避免该消息在分叉上的重放,可以消息内容中添加 chainId,如 Cobo is the best + chainId()。在带上特定的链标识符之后,在不同分叉链上的消息内容不同,消息签名不同,因此无法直接进行重放复用。

相关推荐