Electrum 钱包修复安全漏洞,黑客已盗走比特币

Electrum 已发布 4.8.3 版本,修复一个高危比特币钱包漏洞。开发者确认,恶意服务器已利用这一漏洞重定向用户支付,并且至少发生了一起资金被盗事件。

  • Electrum 在确认恶意服务器正在利用高危漏洞后,发布了 4.8.3 版本。
  • 攻击者会用欺诈交易替换待处理的比特币付款,用户在提高手续费时可能误以为交易正常并授权。
  • 有两名用户报告了相关事件,其中一人因提高交易手续费而损失了比特币。
  • 该漏洞影响 4.8.3 之前的所有 Electrum 版本;开发者尚未披露总损失金额。
  • 安全补丁会验证由钱包控制的币所发起、但尚未确认的交易签名。

根据该钱包 10 月 24 日发布的安全公告,攻击者利用 Electrum 处理未确认比特币交易的方式,将合法的外发付款替换为欺诈交易;用户在增加交易手续费时,可能会不小心授权这些交易。

Electrum 是一款轻量级比特币钱包,连接外部服务器以获取交易历史、广播交易以及其他网络信息。与完整的比特币节点不同,这款软件不会独立处理区块链活动的每一个环节。

其文档解释称,Electrum 通过简单支付验证(Simple Payment Verification)验证已确认交易,但在显示待处理交易时,历史上一直信任其主服务器。

攻击者利用了这一差异,通过恶意服务器拦截提交的交易,使其在到达比特币网络之前就被篡改。

在阻止合法交易广播后,攻击者可以向钱包发送一笔替代交易,把收款地址改成由攻击者控制的地址。

尽管替代交易带有无效签名,但存在漏洞的 Electrum 版本在将其显示到钱包历史记录之前并不会检查这些签名。

当用户尝试通过 Replace-by-Fee(RBF)提高交易手续费时,这种欺骗就会变得危险。RBF 是比特币的一项功能,允许一笔未确认付款被另一笔手续费更高的交易替换。

一旦用户批准手续费调整,就可能在不知情的情况下签署一笔向攻击者付款的有效交易。

Electrum 确认真实世界攻击并造成比特币损失

开发者披露了两起私下报告的事件,说明这一漏洞已不再只是理论上的攻击。

10 月 11 日,一名名为 dannydeezy 的用户报告称,Electrum 历史记录中显示的一笔交易与最初提交的付款并不一致。

10 月 18 日,另一名用户 Raju-K12 在尝试提高交易手续费时损失资金,并联系了开发者。

根据公告,这两起事件都涉及由攻击者控制的收款地址,且这些地址被设计为与目标收款方比特币地址的最后四个字符相匹配。

在第二起案例中,欺诈交易的手续费为零,开发者怀疑这是为了诱使受害者发起提高手续费的操作。

第一起报告涉及一个 2-of-3 多重签名钱包,使用了两台 Trezor 设备。其合法交易包含 31 个输入和 1 个输出。

调查人员发现,全部 62 个签名对于原始付款都有效,但对于被替换的交易则无效。伪造交易几乎把所有比特币都转到了一个相似地址,只把一小部分返还给钱包。

原始交易仍然有效,但从未进入公开的比特币网络。

Electrum 承认,现实中确有一些服务器正在实施这种攻击。不过,开发者没有披露参与攻击的服务器数量、被盗金额,或是否已识别出更多受害者。

Electrum 4.8.3 阻止恶意提高手续费交易

该修复已于 10 月 23 日纳入 4.8.3 版本,并于 10 月 24 日提供可下载二进制文件。

通过提交 90fe308,开发者为由用户钱包控制输入的未确认交易引入了签名验证。

Electrum 现在会在将这些交易纳入本地历史记录之前检查签名,从而阻止公告中描述的欺诈性外发付款被当作合法交易显示。

这次更新并不会让 Electrum 变成完整的比特币节点。开发者说明,传入的未确认交易仍不在新的签名检查范围内,而已确认付款仍沿用现有的验证流程。

运行 4.8.3 之前版本的用户被敦促从 Electrum 官方网站下载更新。

对于暂时无法升级的用户,开发者建议在签署交易前核对完整收款地址和金额,包括手续费替换交易。

根据公告,仅连接受信任服务器(包括自己的服务器)的用户,不会受到这种特定的恶意服务器攻击影响。

Electrum 过去的攻击显示服务器风险反复出现

这起事件延续了此前针对 Electrum 依赖外部服务器的攻击尝试。

2018 年 12 月,crypto.news 报道称,恶意服务器曾向用户显示伪造的软件更新说明。当时的报道估计损失接近 100 万美元。

2019 年的另一轮恶意服务器攻击则利用虚假的钱包更新和拒绝服务活动,把用户引向被入侵的软件。

这些攻击依赖欺骗性下载,而这次新修补的漏洞则是在一个原本合法的钱包内部,操纵待处理交易信息。

2020 年发表的一篇关于 Electrum 服务器的采访文章,讨论了轻量级钱包的取舍,包括其对外部基础设施在交易历史方面的依赖。

Electrum 自己的文档称,其客户端通常会连接大约 10 台服务器,但会选择一台主服务器来获取钱包历史并广播交易。文档还表示,这台主服务器在未确认交易方面是被信任的。