以太坊虚构攻击汇总


TLDR:只要虚拟状态有效,任何以太坊节点都可以向乐观汇总协调员撒谎。协调员只有在尝试发送交易或切换以太坊提供商时才会发现这一点。

通过在以太坊网络上使用calldata存储块信息来进行乐观汇总。这允许任何人操作以太坊节点并下载汇总状态。实际上,有些人不会操作他们自己的以太坊节点,而是依靠托管解决方案(例如Infura)。

有效性与存在

可以快速廉价地构建有效的汇总链。所需要做的就是进行交易,构建状态并将其存储在以太坊网络以外的其他位置。当汇总协调器从以太坊节点接收状态历史记录时,协调器可以通过重播状态转换来确定数据是否有效;然而,协调不能确定是否状态存在的链条。最好的办法是询问以太坊节点是否存在。

人为攻击

想象一个名为Untrust的以太坊节点服务。Untrust为以太坊dapp提供了低成本的基础架构。如果他们选择不信任,则可以查看特定的汇总并创建虚构的历史记录。他们甚至可以通过从某些真实交易中提取通话数据并将其与虚拟交易混合来创建半虚拟历史。这样,他们将创建一个完全不同的当前状态哈希,但是只有在使用Untrust的汇总运算符尝试提交一个块的情况下,这才被发现(因为这将是欺诈性的)。

这种类型的攻击并不是特别强大。攻击者无法伪造签名,不能直接窃取资金,但可以在汇总中撒谎。

想象一下,不信任变得更加复杂。他们决定攻击名为MoneyMover的汇总。当收到对MoneyMover地址的请求时,它们会从运行完全独立的以太坊网络的节点返回信息。在这个独立的以太坊网络中,Untrust镜像了大多数交易(以使余额看起来相似),但是在需要时注入自己的交易。

现在说不信任找到一个使用MoneyMover汇总付款的网站。该网站运行自己的MoneyMover协调器,该协调器连接到Untrust以访问以太坊网络。不信任可能会在其镜像网络中创建虚构的交易,MoneyMover协调器将其解释为有效(只要状态转换有效)。由于MoneyMover协调器未与任何对等方连接,因此确定链上存在的唯一方法是询问以太坊节点(在本例中为Untrust)。

Untrust在其镜像网络上进行了一次虚构的交易,该网站运营的MoneyMover协调器将其检测为有效付款。Untrust现在无需付费即可访问该网站。网站只会在他们提交交易或切换到其他以太坊提供商时才发现这种虚构的付款。

实际风险

仅当协调员未运行其自己的以太坊节点时,此攻击才有意义。有一些情况是有问题的:

协调器数据的下游使用者无法知道他们接收的数据是否存在;他们不能信任协调器正在使用的eth节点,因为使用者没有自己运行该节点。

欺诈证明者特别容易受到这种攻击,因为它们仅在检测到欺诈时才提交交易。恶意的eth节点可能会从区块链数据中剥离无效交易,并仅返回不同的状态哈希。欺诈证明者将无法得知状态哈希是虚构的,并且永远不会提交欺诈声明。

eth节点操作员向汇总协调员说谎,以诱使他们要么提交无效的状态转换,要么提交无效的欺诈声明。一旦发生这种情况,恶意的eth节点运营商就可以充当有效的交易对手并收集抵押的资金。

解决

解决方案1

在工作链证明的背景下,协调员可以请求块数据并检查其是否足够困难。检查当前难度的至少一半应该使大多数攻击在经济上效率低下。

在放样链证明中,这变得不可行,因为恶意的eth节点可能会从未放样的地址提供签名。他们可以通过在查询时还押入抵押金额来做到这一点。

解决方案2

一个不太优雅的解决方案将涉及信誉良好的源不断签名并发布已知存在于链上的汇总状态哈希的列表。该列表可以在IPFS之类的服务上发布。协调器节点可以包括一个已知的信誉良好的公共密钥的预设列表(汇总创建者,EF等)。

如果出现以下情况,协调员将知道汇总数据是真实的

所有状态转换均有效

所有状态散列均由信誉良好的来源签名

这将确保汇总数据有效且非虚构,并且将允许汇总节点使用任何以太坊节点来同步数据。

—-

编译者/作者:蚁族的奋斗

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

分享到