新闻加密货币恶意 Electrum 服务器将已广播的比特币付款替换为伪造的零手续费交易;修复已随 4.8.3 版本发布

恶意 Electrum 服务器将已广播的比特币付款替换为伪造的零手续费交易;修复已随 4.8.3 版本发布

作者: Cryptopolitan·

要点速览

  • •Electrum 发布 4.8.3 版本,修复涉及恶意服务器替换已广播付款的高危漏洞,维护者 SomberNight 于 10 月 24 日发布公告 GHSA-6jp4-8v48-cc5v 并敦促用户升级。
  • •该攻击之所以有效,是因为旧版本不会验证内存池交易签名,伪造的零手续费交易显示为待处理,而 Replace-By-Fee 提高手续费的操作导致受害者的钱包以有效签名对攻击者版本进行签名。
  • •一名使用两个 Trezor 的 2-of-3 旧版 P2SH 多重签名且有据可查的受害者,收到了一笔在 31 个输入上具有逐字节相同 scriptSigs 的伪造交易,其目标地址模仿了真实地址的后四个字符,以 GyQ3 结尾。
  • •通过提交 90fe308 引入的修复,在将内存池交易添加到本地历史之前验证钱包自有输入上的签名,但在区块链上确认之前,未确认的入账付款仍无法由钱包完全验证。
  • •Electrum 建议无法升级的用户在对任何内容(包括提高手续费)签名之前核实输出地址和金额,而仅连接到自己服务器的用户从未受到影响。
恶意 Electrum 服务器将已广播的比特币付款替换为伪造的零手续费交易;修复已随 4.8.3 版本发布

恶意 Electrum 服务器一直在将用户刚广播的比特币付款替换为向相似地址支付资金的伪造零手续费交易,赌受害者会提高手续费并对攻击者版本进行签名。Electrum 于 10 月 24 日发布 4.8.3 版本以修复该高危漏洞。维护者 SomberNight 当天发布了公告 GHSA-6jp4-8v48-cc5v,并要求用户升级。

攻击如何运作

Electrum 是一个轻量级客户端:它不运行完整的比特币节点,并依赖其服务器获取未确认内存池交易的信息,正如该项目自身文档所解释的那样。当用户签名并发送一笔交易(tx1)时,恶意服务器可以将其拦截,并向钱包提供一笔不同的交易(tx2),该交易会将资金发送到攻击者的地址。

Tx2 携带的签名无效。旧版 Electrum 不会验证内存池交易的签名,因此钱包将 tx2 显示为待处理,并隐藏了 tx1。Replace-By-Fee(RBF)允许发送方以更高手续费重新广播一笔未确认交易。如果伪造交易的手续费被提高,钱包便会以有效签名对攻击者的版本进行签名。这样一来,一个常规步骤——为看似卡住的付款提高手续费——就变成了受害者自己的钱包对攻击者交易签名的时刻。

伪造地址与合法目标地址共享以 GyQ3 结尾的结尾

其中一名代号为 dannydeezy 的目标用户记录了这次攻击。其设置为使用两个 Trezor 的 2-of-3 旧版 P2SH 多重签名,包含 31 个输入和一个输出。该用户在两个 Trezor 上核对了输出,然后进行广播。Trezor 在真实交易离开钱包之前对其进行了验证;攻击者版本是之后才由恶意服务器交付的,因此设备上的校验从未见过它。钱包历史随后显示全部金额被发送到一个未确认的未知地址,该条目后来变为“Local”。在 Electrum 中,“Local”表示仅钱包知晓且在网络上不可见的交易。

伪造交易复制了真实交易的输入、版本和锁定时间,在所有 31 个输入上具有逐字节相同的 scriptSigs。全部 62 个签名针对真实交易均验证通过;而针对伪造交易则无一通过。几乎所有资金都被发送到一个相似地址,只有少量资金被退回到钱包自身的一个已用地址。

伪造交易以 GyQ3 结尾——真实目标地址也是如此。攻击者设法构造了一个与正确地址后四个字符相匹配的地址。ZachXBT 还曝光了影响 Phantom 钱包用户的类似地址投毒骗局;伪造地址的设计旨在挫败仅凭首尾字符的快速核对。

4.8.3 版本仅对钱包自有输入检查签名

另一名用户 Raju-K12 于 10 月 18 日私下称,他提高了伪造交易的手续费并损失了资金。据维护者称,一些服务器正在实际运行此攻击。

提交 90fe308 增加了一项检查:在将内存池交易添加到本地历史之前,对钱包自有“is_mine”输入的签名进行检查。4.8.3 版本于 10 月 23 日打上 git 标签,并于次日发布二进制文件。

Electrum 仍仅检查钱包控制的输入,因此未确认的入账交易不会被检查,因为该客户端没有完整的脚本解释器。对于收款人而言,这意味着待处理的入账付款在区块链上确认之前,无法仅凭钱包完成完整验证。对于无法升级的用户,Electrum 的应对方法是在对任何内容(包括提高手续费)进行签名之前,核实输出地址和金额。仅连接到自己服务器的用户从未受到影响。

Electrum 过去也曾发布过紧急修复。2018 年 1 月,在谷歌研究员 Tavis Ormandy 发现网站可以检测到端口并盗取资金后,它关闭了一个已开放约两年的 JSON RPC 接口。Cryptopolitan 报道称,Coldcard 种子生成漏洞警告于 7 月发布,就在同一天,约 594 BTC(约合 3800 万美元)从大约 500 个钱包中被盗取。