比特币钱包 Electrum 修复将付款重定向至攻击者的高危漏洞
要点速览
- •10月24日发布的 Electrum 4.8.3 修复了一个高危漏洞,该漏洞允许恶意服务器显示虚假交易,并将提高手续费后的付款重定向至攻击者控制的地址。
- •该漏洞源于 Electrum 未验证从服务器接收的未确认交易的签名,使伪造的零手续费付款在用户历史中显得卡住。
- •安全公告指出,一些服务器已在实际环境中实施该攻击,其中一名用户在10月18日为一笔被操纵的交易提高手续费后确认资金损失。
- •补丁在将未确认交易添加到历史之前验证钱包自有输入的加密签名,而来自外部发送者的交易仍无需签名验证即可被接收。
- •运行 4.8.3 之前版本的用户仍处于风险中,应更新或手动核对输出地址;仅连接自建服务器的用户不受影响。

比特币钱包 Electrum 于10月24日发布 4.8.3 版本,修复一个高危漏洞。该漏洞允许恶意服务器注入虚假交易,诱骗用户将资金支付至攻击者控制的地址。
该漏洞影响 4.8.3 之前的所有钱包版本。4.8.3 现已发布。至少已有一名用户确认因该漏洞损失资金。
攻击如何运作
根据 Electrum 开发者 SomberNight 发布的安全公告,该攻击利用了钱包对未确认交易的信任模型。当用户通过被入侵的服务器广播付款时,服务器可以压制真实交易并注入一笔虚假的冲突交易——显示攻击者的输出地址和零手续费,使付款看起来处于卡住状态。
由于 Electrum 不验证从服务器接收的未确认交易的签名,这笔伪造交易会以合法状态出现在钱包历史中。当用户为看似停滞的付款提高手续费时,实际是在签名并广播一笔全新的有效交易——其输出地址属于攻击者。原始付款从未发出;提高手续费产生的交易才是首笔真正进入网络的交易,而它支付给了攻击者。
提高手续费本身是比特币的常规操作——一种推动看似卡住的付款的标准方式——因此这一伪造手段将日常的故障排除步骤变成了资金被重定向的时刻。虚假交易上显示的零手续费正是造成付款停滞假象的原因。
SomberNight 指出,攻击者可以通过研磨运算使虚假交易的输出地址匹配用户目标地址的最后四个字符。只检查长比特币地址尾部的用户会看到表面上的匹配。
攻击已在实际环境中确认
安全公告指出,"一些服务器正在实际环境中实施这种攻击",并有两名用户的报告佐证。一名名为 dannydeezy 的用户最早于10月11日标记了可疑的服务器行为;该被操纵的交易从未传播到本地服务器之外,因此没有资金损失。另一名用户 Raju-K12 报告在10月18日为一笔被操纵的交易提高手续费后确认发生资金损失。
补丁改变了什么
4.8.3 中的修复在将任何未确认交易添加到本地历史之前,验证钱包自有输入的加密签名,从而封堵了主要攻击面。服务器再也无法在不提供有效签名的情况下注入涉及用户自身地址的虚假交易——而攻击者无法伪造有效签名。该修复于10月23日在代码仓库中打上标签,二进制文件于次日在官方发布页面发布。
来自外部发送者的交易——即所有输入均不属于用户钱包的交易——仍然无需签名验证即可被接收。SomberNight 在公告中承认了这一遗留缺口,指出封堵它还需要额外的工作。Electrum 将在何时以及如何把该验证扩展到外部来源的交易,是未来版本中值得关注的主要待解事项。
熟悉的攻击目标
Electrum 是最古老的比特币软件钱包之一,此前也曾遭遇恶意攻击。一场始于2018年的攻击利用恶意服务器推送虚假更新通知,到2020年已从 Electrum 用户手中窃取约2500万美元。
该钱包的开放服务器模式——任何人都可以运行节点——正是这类攻击得以实现的原因。Electrum 是一个轻量级客户端,依赖外部服务器获取区块链数据而非下载完整区块链,这一权衡使钱包保持轻快,但也将其安全性置于一个面向服务器的信任模型中,而本次漏洞正是直接针对该模型。仅连接自建服务器的用户不受影响。
仍在运行 4.8.3 之前版本的用户仍处于风险之中,无法立即更新的用户应在签署任何交易前手动核对输出地址和金额。Electrum 4.8.3 现已在 electrum.org 及该项目的 GitHub 仓库发布。