币圈界报道:

Electrum 漏洞事件深度解析:虚假交易如何诱骗签名

Electrum 钱包 4.8.3 版本已发布紧急更新,以修补一个可能导致用户资金被窃的高危安全问题。此次漏洞导致两名用户遭遇针对性攻击,其中一人因签署篡改后的交易而造成实际损失。

攻击者如何构建隐蔽的交易陷阱

开发者 SomberNight 在10月24日发布安全通告,揭示部分恶意服务器已在真实环境中部署此类攻击手段。攻击核心不依赖直接盗用资金,而是通过诱导用户主动提供有效签名来完成转账授权。

攻击者无法独立发起有效交易,其伪造的付款包含无效数字签名,因而会被比特币网络自动拒绝。真正关键的环节在于:迫使钱包持有者在未察觉的情况下签署经过修改的交易版本。

通过利用“替换费率”(Replace-by-fee)机制,攻击者可引导用户提高手续费以加速交易处理。这一操作在用户端表现为常规调整,但在网络层面被视为一笔全新交易,一旦签名确认,即等于批准了所有修改内容,包括收款地址和金额。

攻击路径四步拆解:从伪装到资金转移

吞没阶段:用户广播一笔正常付款,但恶意主服务器故意不将其传播至比特币网络。替换阶段:服务器向钱包推送一条冲突交易,将相同输入发送至攻击者控制的地址。尽管签名无效,旧版 Electrum 未验证签名,仍将其显示为待确认状态。显示阶段:真实交易从历史记录中消失,虚假交易被错误地呈现为未确认付款。提升阶段:当用户对虚假交易进行费用提升时,Electrum 会生成有效签名,从而正式授权该笔非法转账,资金随即流向攻击者。

整个过程直到第四步才发生实际资金流失。由于签名仅对当前交易有效,若交易内容被更改,原签名依然可能被接受,这正是本次攻击得以成立的技术基础。

受害者案例还原:两次报告揭示攻击演变

首例报告由用户 dannydeezy 于10月11日提交,涉及一个由两个 Trezor 硬件设备保护的 2-of-3 多重签名钱包。该用户在双重设备验证后广播付款,随后发现资金显示为未确认状态并迅速变为“本地”。实际上,原始交易从未进入内存池。

伪造交易设计极为精密:使用完全一致的输入与逐字节复制的真实签名数据,62个签名虽匹配真实交易,却与虚假交易不兼容。其主要输出以“GyQ3”结尾,与真实目的地末四位字符一致,并将少量资金退回自有地址,模拟找零行为。手续费几乎为零,意在促使用户提升费用。

第二起事件发生在10月18日,用户 Raju-K12 在提升费用后遭遇资金损失,具体金额未公开。此事件帮助开发者锁定攻击路径——费用提升是最终触发点。

时间线如下:10月11日首次私密报告,未明确提及费用提升;10月18日第二次报告,确认损失源于费用提升;10月23日标记修复版本;10月24日正式发布二进制文件及公告。

4.8.3 版本修复范围与技术边界

新版已改进关键逻辑:在将任何涉及支出钱包资金的未确认交易加入历史记录前,强制验证其数字签名。带有无效签名的虚假出账交易将被系统拒绝,不再展示,从而切断攻击入口。

然而,该检查具有局限性:仅针对出账交易,对传入的未确认交易仍不验证。原因在于 Electrum 缺乏完整共识引擎,若需追溯父级未确认交易直至已确认区块,将带来巨大计算开销。已确认交易则通过简化支付验证(SPV)机制完成校验。

仅连接至受信任或自托管服务器的用户不受影响。该豁免不适用于随机选择的公共节点作为主连接的情况。

应对建议:签名前必须执行的四步防护

第一步:立即升级至 4.8.3 版本

请从官方渠道下载客户端,并严格核对文件签名以确保来源可信。

第二步:比对完整目标地址

务必与原始发票或付款请求中的完整地址进行比对,避免依赖已被污染的钱包历史记录。

第三步:在硬件设备屏幕确认细节

每次签署交易前,应仔细核对金额、费用及收款地址。Trezor 官方指南强调必须在此环节进行最终人工确认。

第四步:遇异常立即中止操作

如遇交易停滞或地址变更,切勿急于提升费用。应在独立区块浏览器中查询原始交易 ID。首例报告中,真实交易始终未抵达网络。

对于暂时无法升级的用户,建议在每次签署交易(无论是否涉及费用提升)时,手动比对输出地址与金额是否与预期完全一致。虽然补丁已关闭特定攻击路径,但由于钱包仍依赖主服务器获取未确认数据,最终屏幕上的确认仍是不可替代的安全屏障。