Electrum 钱包漏洞让恶意服务器在提高交易手续费时转移比特币付款
目录
你可能想知道
- 钱包试图加快比特币付款,怎么会让用户授权向攻击者付款?
- Electrum 的安全更新做了哪些改变?尚未升级的用户应该怎么做?
Electrum 漏洞如何运作
Electrum 是历史最悠久的比特币软件钱包之一,其中的安全漏洞让恶意服务器能误导试图加速尚未确认付款的用户。至少有一起已报告事件中,用户批准了一笔将资金转给攻击者的交易。Electrum 开发者表示,周六披露漏洞时,已有部分服务器在利用此问题。
开发者在 10 月收到两份报告。其中一份来自一名用户,对方表示在批准一笔看似例行的交易手续费上调后损失了资金。这些报告说明,一项原本旨在帮助用户处理付款延迟的功能,如果钱包软件依赖服务器提供未经信任的信息,就可能成为风险来源。
Electrum 的运作方式与完整的比特币节点不同。它不会自行从比特币网络获取所有交易信息,而是依赖外部服务器查询交易历史并广播付款。修复前,Electrum 不会验证服务器报告的某些相关未确认交易的签名。因此,恶意服务器可能向钱包提供有关尚未确认付款的误导信息。
控制或入侵钱包所用服务器的攻击者,可以在付款抵达比特币网络前拦截它。接着,攻击者可用伪造的交易替换 Electrum 历史记录中显示的付款。这笔假交易看起来像是将用户的币转至攻击者控制的地址,但其中包含易受攻击的钱包未能检测到的无效签名。
这笔欺诈付款可能会在钱包中显示为待处理。这一状态之所以重要,是因为比特币支持用另一个手续费更高的版本替换尚未确认的交易。这项称为 Replace-by-Fee 的功能,让用户在初始付款等待时间过长时,可以促使交易获得确认。在已报告的攻击中,选择提高费用的选项,可能使 Electrum 使用被替换的交易,并签署一笔有效的替代交易,将资金转给攻击者。
危险并非单纯来自一笔尚未确认的付款,而是服务器提供的交易数据与用户之后决定签署替代交易两者的结合。用户如果以为自己是在调高一笔合法付款的手续费,实际上可能授权将资金转至攻击者的地址。因此,钱包界面与交易历史扮演了重要角色:被替换的付款必须看起来足够可信,用户才会继续操作。
在一起已报告案例中,恶意交易完全没有手续费,这可能让它看起来卡住,促使用户尝试加快交易。攻击者还创建了收款地址,让地址末四个字符与合法目的地址相同。这种相似性可能使快速目视比对较难发现目的地已经变更。地址末尾部分相同并不代表两个地址相同,但在匆忙检查时,确实可能让欺诈替换更难察觉。
第一份报告于 Oct. 11 提交,涉及一个使用两台 Trezor 硬件设备的二取三多重签名钱包。用户在两台设备上都检查了合法付款,之后才在 Electrum 的历史记录中发现另一笔不同的转出交易。该用户没有报告资金损失。尽管如此,这起事件仍让开发者得以了解被替换的交易如何显示在钱包中,以及这类攻击可能如何影响多重签名设置。
第二名用户于 Oct. 18 报告遭窃。根据报告,该用户调高了被替换交易的手续费,结果蒙受金钱损失。开发者尚未公布被盗金额,也未指出涉事的恶意服务器。现有报告证实此漏洞至少被用于一起盗窃事件,但未提供受影响用户人数或损失总额的完整信息。
Electrum 于 Oct. 24 发布 4.8.3 版作为回应。此次更新新增了签名检查,适用于使用用户自有钱包中币所产生的未确认交易。通过验证这些签名,钱包可以拒绝已报告攻击中使用的无效交易数据,而不是将其显示为可信的待处理付款。
如果连接到恶意服务器,较早版本仍容易受到上述攻击。开发者建议用户升级 Electrum,并在签署付款前仔细核对收款地址与金额。只连接到可信服务器(包括自行运行的服务器)的用户,不会受到这起特定攻击影响。这项但书并不减损升级的价值:安装软件更新是确保钱包应用新验证检查的直接方式。
这些报告也显示,在另一台硬件设备上检查交易很有帮助,同时也提醒用户仍须仔细查看设备上显示的详细信息。在第一份报告中,用户已在两台 Trezor 设备上检查合法付款,但之后在钱包历史记录中看到另一笔不同的转出交易。报告并未表示该用户损失了资金,也不应将此视为硬件钱包普遍遭到入侵的证据。相反,这凸显了检查即将签署的交易所对应的确切目的地与金额的重要性。
用户检查付款或手续费上调时,可以采取几项简单的实际检查:确认完整收款地址、核对金额是否符合预期付款,并留意交易是否看似卡住或出现异常。只比对地址末尾几个字符并不足以验证地址。用户还应确认钱包连接到可信服务器,并安装已修复的软件版本。
修复程序在第一起报告盗窃事件六天后发布。这段间隔代表首次报告盗窃与修正版推出之间的时间,但无法据此判定漏洞最初何时被发现,或攻击者可能利用漏洞多久。开发者尚未指出涉事服务器,也未公布被盗金额,因此目前无法获得事件的更多细节。
重点摘要表
| 方面 | 说明 |
|---|---|
| 漏洞 | 修复前,Electrum 不会验证服务器报告的某些相关未确认交易的签名。 |
| 攻击方式 | 恶意服务器可以替换成一笔假的待处理交易,之后在用户试图提高其手续费时利用 Replace-by-Fee。 |
| 报告事件 | 开发者在 10 月收到两份报告。一名用户表示在调高手续费后遭窃;另一名用户则未报告资金损失。 |
| 安全更新 | Electrum 于 Oct. 24 发布 4.8.3 版,新增相关未确认交易的签名检查。 |
| 建议措施 | 升级 Electrum、核对完整收款地址与付款金额,并使用自己信任的服务器。 |
后续...
Electrum 事件引出了一些更广泛的问题:加密货币钱包如何在便利性、速度与独立验证之间取得平衡。依赖外部服务器的钱包,比起自行运行完整节点更容易使用,但其安全性在一定程度上取决于服务器所提供信息的质量与可信度。后续可努力的方向之一,是设计能在本地验证重要交易细节的钱包软件,即使为了方便而使用外部基础设施也能做到这一点。
未来开发也可以着重于让交易变更更容易识别。提高手续费时,界面应清楚说明目的地址与金额是否保持不变,并在底层交易与用户原先意图不同时发出警告。界面可以更醒目地呈现完整地址,并提供更清楚的方式,让用户比对原始付款与替代交易。这类措施无法取代密码学检查,但能让可疑变更更容易被发现。
研究服务器可靠性与去中心化钱包基础设施,也是值得投入的方向。钱包开发者、节点运营者与安全研究人员可以探索降低对单一信息来源依赖,以及检测不一致交易数据的方法。持续检查硬件钱包的签名界面也很重要,让这些设备能呈现用户评估交易所需的详细信息,而不是只要求用户批准。
对用户而言,眼前的教训很实际:保持钱包软件为最新版本、签署前核对完整目的地址与金额,并认真对待异常延迟或交易历史记录出现意料之外的变化。长远目标是让安全验证成为钱包系统内置的特性,而不是要求用户在压力下自行完成的步骤。
最後編輯時間:2026/10/26
