Electrum 钱包修复高危漏洞:防止恶意服务器篡改交易
本周末,比特币软件钱包 Electrum 修复了一项严重的安全漏洞。该漏洞允许恶意服务器操纵待处理的比特币交易,并将资金重定向至攻击者控制的地址。此缺陷影响 4.8.3 版本之前的所有版本,目前官方已发布更新后的 4.8.3 版本。已有至少一名用户证实因该漏洞遭受了资金损失。
攻击原理与机制
Electrum 是历史最悠久的比特币软件钱包之一。此次攻击利用了钱包对未确认交易的信任模型。当用户通过受感染的服务器广播支付请求时,服务器可以压制真实的交易,并注入一个伪造的冲突交易——显示攻击者的输出地址和零手续费,使支付看起来处于停滞状态。
由于 Electrum 不会验证来自服务器的未确认交易的签名,因此这种欺骗性的交易会作为合法交易出现在用户的钱包历史记录中。当用户试图为看似停滞的交易提高手续费(Fee-bump)时,他们签署并广播了一个全新的有效交易——该交易的输出地址属于攻击者。此时,真实支付从未发出;提高手续费的交易实际上是第一个真正进入网络的交易,且资金直接流向攻击者。
社会工程学辅助攻击
发布公告的 Electrum 开发者 SomberNight 指出,攻击者可以通过“暴力破解”伪造交易的输出地址,使其与用户预期目的地的最后四个字符相匹配。任何仅检查长比特币地址尾部的人,都可能会看到一个看似匹配的结果,从而产生误判。
公告指出,“一些服务器正在野外进行此类攻击”,这一说法得到了两份用户报告的佐证:
- dannydeezy:于 10 月 11 日首次标记了可疑的服务器行为。由于被操纵的交易未能在本地服务器之外传播,因此没有造成资金损失。
- Raju-K12:于 10 月 18 日报道了一起确认的资金损失事件,其在提高一笔被操纵交易的手续费后遭受损失。
补丁详情与局限性
4.8.3 版本的补丁通过在主攻击面引入加密签名验证来关闭漏洞:在将任何未确认交易添加到本地历史记录之前,必须验证属于钱包所有输入内容的签名。如果没有提供有效的签名(攻击者无法伪造),服务器将无法注入触碰用户自身地址的虚假交易。该修复代码于 10 月 23 日在代码库中标记,并于次日发布了二进制文件。
然而,SomberNight 在公告中也承认存在安全缺口:来自外部发送者的传入交易(其中没有任何输入属于用户的钱包)仍会在不进行签名验证的情况下被接受。关闭这一缺口需要额外的工作。
历史背景与建议
这并非 Electrum 首次遭遇此类挑战。过去,该钱包曾多次应对恶意攻击。例如,2018 年曾有一场利用恶意服务器推送虚假更新通知的活动;到 2020 年,据估计有约 2500 万美元从 Electrum 用户账户中被盗取。Electrum 开放的服务器模式——任何人都可以运行节点——使得这类攻击成为可能。
安全建议:
- 仅连接到自己运行的服务器的用户不受影响。
- 无法立即更新的用户,在签署任何交易之前,应手动仔细核对输出地址和金额。
Electrum 4.8.3 现已在官方网站及项目 GitHub 页面上可供下载。