织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊 EIP-3074 不够安全,有什么简单的替代方案吗?(2)

时间:2021-07-13 10:29来源:未知 作者:admin 点击:
EveSwap 的调用者程序看似无害,而且永远不会窃取用户的代币,因为这样马上就会露馅。 用户很开心。交易都成功了,交易费也很便宜。几个月来平安无事

  • EveSwap 的调用者程序看似无害,而且永远不会窃取用户的代币,因为这样马上就会露馅。

  • 用户很开心。交易都成功了,交易费也很便宜。几个月来平安无事。

  • 然而,每当有人使用 EveSwap 交易 AliceSwap 的治理代币 ALI 时,会自动将用户的 AliceSwap 投票权委托给 EveSwap。

  • 一旦授权人数达到某个阈值,EveSwap 就会通过治理提案劫持 AliceSwap。

  • EveSwap 用户不太可能注意到这个过程,因为交易总是成功的,但是最终会给 AliceSwap 带来毁灭性的打击。

    跨链重放示例

    EIP-3074 合理地建议 commit 应该包含 chainid。但是,这是由调用者,而非协议执行的。在另一条链上有着相同地址的调用者可能会跳过该检查(或与此相关的检查)。

    • EveSwap 在兼容 EVM 的 BobSpongeChain 上运行,后者支持 EIP 3074。EveSwap 在 BobSpongeChain 上部署了一个诚实的调用者。

    • 用户使用该调用者在 BobSpongeChain 上交易,然后使用桥将资产转移到以太坊上。

    • EveSwap 使用同一个部署密钥在以太坊上部署了另一个地址相同的调用者。这个在以太坊上的调用者不会检查 commit,只会检查 ownerOnly,并充当其所有者的通用 AUTH/AUTHCALL 代理。

    • 这样一来,EveSwap 就可以劫持用户在以太坊上的外部账户并卷走他们的资产了。

    用户从未在以太坊上交易过,运行在 BobSpongeChain 上的调用者程序又经过了严格的安全审查。尽管如此,用户还是丢失了全部资产。

    以太坊通过 EIP-155 的重放保护来防范这种情况。AUTHCALL 没有重放保护。由于所有 commit 检查都交给调用者完成,我们失去了以太坊提供的一切交易保护。攻击是在所难免的,因为保护措施很随意。如果要接受 EIP-3074,AUTH 消息必须明确包含 chainid,而非将其作为 commit 的一部分。

    我们还能采取什么别的手段?

    我的提议是实现一个更明确的机制,在协议层面强制规定 commit 的含义。commit 结构将是类型化的(如 EIP-712 所述),钱包会以用户可读的形式将 commit 呈现出来。用户可以确切地知道事务是什么样子的,并确信这个事务不会在任何链上重放,无需依赖于调用者程序开发者的品行和能力。

    一个可能的实现:

    AUTH 将使用包含授权调用列表的类型化结构代替 commit 哈希值。每个调用都将指定 {nonce,to,gas,calldata,value,chainid}。签名将被验证,整个授权调用列表将保存为 authorized_transactions 而非 authorized 地址变量。

    AUTHCALL 将得到一个新的参数 index,该参数指向最后一个 AUTH 创建的列表中的地址。

    用户地址的 nonce 将随 AUTHCALL 递增。nonce 并非由调用者存储,而是实际的账户 nonce。 (责任编辑:admin)

    织梦二维码生成器
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    栏目列表
    推荐内容