简述
比特币钱包 Electrum 于10月24日发布 4.8.3 版本,修补了一个高危漏洞。该漏洞允许恶意服务器注入伪造交易,并诱使用户把资金发送到攻击者控制的地址。
至少有一名用户确认在10月18日因对一笔被服务器篡改的交易进行补手续费操作而损失资金。
此次修复会在显示未确认交易前,先验证钱包自有输入的签名;不过,来自外部发送方的入账交易仍不会经过验证。
比特币钱包 Electrum 本周末修补了一个高危漏洞。该漏洞允许恶意服务器操纵待处理的比特币交易,并将资金重定向到攻击者控制的地址。受影响的是 4.8.3 之前的所有版本,目前新版本已可下载。
至少有一名用户已确认因该漏洞损失资金。
Electrum 是最早的比特币软件钱包之一。此次攻击利用了该钱包对未确认交易的信任模型。当用户通过被入侵的服务器广播一笔付款时,服务器可以屏蔽真实交易,并注入一笔伪造的冲突交易——显示一个攻击者的输出地址和零手续费,让这笔付款看起来像是卡住了。
由于 Electrum 不会验证来自服务器的未确认交易签名,这笔伪造交易会以合法交易的身份出现在钱包历史记录中。
当用户对这笔看似停滞的付款进行补手续费操作时,用户会签名并广播一笔全新的有效交易——其输出地址属于攻击者。真实付款从未发送;补手续费的这笔交易才是第一笔真正进入网络的交易,而它支付给了攻击者。
Electrum 开发者 SomberNight 发布的公告指出,攻击者可以调整伪造交易的输出地址,使其与用户目标地址的最后四个字符一致。任何只检查一长串比特币地址尾部的人,都会看到一个看似匹配的结果。
公告称,“一些服务器正在现实中实施这种攻击”,这一说法得到了两份用户报告的支持。用户名为 dannydeezy 的用户最早在10月11日指出可疑的服务器行为;由于被篡改的交易没有传播到本地服务器之外,因此没有资金损失。第二位用户 Raju-K12 则在10月18日报告称,在对一笔被篡改的交易补手续费后确认损失。
4.8.3 版本中的补丁通过在把任何未确认交易加入本地历史之前,先验证钱包自有输入上的加密签名,关闭了主要攻击面。服务器不再能够在不提供有效签名的情况下,注入一笔涉及用户自身地址的伪造交易,而攻击者无法伪造这些签名。该修复于10月23日在代码仓库中标记,二进制文件则于次日发布。
来自外部发送方的入账交易——即没有任何输入属于用户钱包的交易——仍会在不进行签名验证的情况下被接受。SomberNight 在公告中承认了这一缺口,并表示还需要额外工作来关闭它。
这并不是 Electrum 第一次遭遇此类事件。2018 年,一场恶意攻击利用伪造服务器推送虚假的更新通知;到 2020 年,相关攻击据估计已从 Electrum 用户那里窃取了 2500 万美元。Electrum 的开放服务器模式——任何人都可以运行一个节点——使这类攻击成为可能。
仅连接自己运行的服务器的用户不受影响。任何无法立即更新的用户,在签署任何交易前都应手动核对输出地址和金额;Electrum 4.8.3 可在 electrum.org 以及该项目的 Github 上获取。
