EIP-3074实施后错误签名可能导致以太坊账户资金被清空

新手教程21小时前更新 web3tt
1 0 0
芝麻开门

芝麻开门(Gateio)

注册芝麻开门享最高$2,800好礼。

币安

币安(Binance)

币安是世界领先的数字货币交易平台,注册领100U。

“在 EIP-3074 之后,一个错误的签名将能够耗尽你在以太坊上的账户余额。”

是的,这是正确的。我是 3074 的共同作者!让我稍微解释一下这个问题,以免它变得更加恶化。

首先:我不知道今天有哪些钱包支持签署未加前缀的数据。这意味着目前没有钱包支持 3074。无论你穿过多少控制面板或打开多少高级功能,都不可能签署 3074 消息。今天不可能签署 3074 消息。

你签署用于“登录”到 dapp 的消息使用的是完全不同的基于 EIP-191 的标准。这会在你签名的消息前加上以下数据:

“””

0x19 <0x45 (E)> <thereum Signed Message:\n” + len(message)> <data to sign>

“””

这就是使得欺骗登录 dapp 的人签署有效的以太坊交易变得不可能的原因。

交易是用单字节值进行前缀的:

0x01 – 2930 tx

0x02 – 1559 tx

0x03 – 4844 tx

更多信息请参阅这里 : https://github.com/ethereum/execu化规范/树/主/列表/签名类型

3074 计划使用前缀 0x04。这将使其与以太坊中所有其他类型的可签名数据区分开来。

钱包将不得不积极选择允许用户签署这些消息。

根据钱包如何整合 3074,它们可能会造成用户更容易受到剥削的情况。要理解这一点,我们需要确保理解 3074 签名的工作原理。

签名构建在以下字段的 auth msg 上。重要的是,它包括一个调用者地址。这是签名只会在 AUTH 下被视为有效的唯一地址。

EIP-3074实施后错误签名可能导致以太坊账户资金被清空

要使一个账户被耗尽,1)钱包将需要允许用户对任何调用者地址进行签名,2)用户必须不验证调用者是否值得信任。只要满足其中之一,就不会有问题。

对于第一点,我们希望钱包能够理解,3074 的调用者更类似于它们代码的扩展,而不是合约。钱包不会让用户自由运行具有访问其私钥的任意代码;同样地,它们也不应该允许用户任意委托其账户。

因此,如果钱包不安全地整合了 3074 并且 用户没有验证与之交互的调用者,那么可能会委托给一个恶意的调用者。

然而,通过从 EOA 发送单个交易,可以撤销所有“正在进行中”的 AUTH 签名。

最低限度,钱包应该让签署 3074 消息变得非常重要。这就像导出你的私钥一样重要。

假设一个钱包安全地整合了 3074,账户仍然有可能被清空。这是批量交易的基本属性。它不仅可以轻松地让您发送多个操作,也可以让攻击者欺骗您将一批资产发送到他们控制的地址。

钱包必须清楚地显示您正在签名的每个操作。这样,您就可以轻松地注意到:“我原本只打算进行一次交易,但这个签名请求让我做了十几次转账”。

如果批量处理是通过盲目签名实现的,那么就不可能检测到这一点。

是的,3074 把很多信任放在了钱包上。但是看,我们已经把我们的私钥安全地交给了它们!再也没有更高级别的信任了。

完全有可能安全地整合和使用 3074。如果任何钱包对如何做到这一点有疑问,请不要犹豫与我们联系。作为 3074 的作者,我们正在思考如何在其下一个阶段中最好地帮助这个标准。

在过去的几年里,我们花了大量时间开发了关于它可能如何被使用和滥用的假设场景。我们对这些想法开始投入生产感到兴奋。但我们也意识到,这是困难的一部分。

© 版权声明

相关文章