比特币钱包漏洞导致恶意服务器在用户尝试加速支付时窃取资金

比特币钱包的一个安全漏洞允许恶意服务器诱骗用户在试图加快交易速度时签署付款给攻击者的协议,开发人员证实至少有一例资金被盗的案例。
比特币最早的软件钱包之一 Electrum 于周六披露了这一漏洞,称部分服务器已被利用。开发人员在 10 月份收到了两份报告,其中一份来自一位用户,该用户在批准了一项看似例行的交易费上涨后损失了资金。
此次攻击利用了 Electrum 处理尚未被网络确认的比特币支付的方式。
与完整的比特币节点不同,Electrum 钱包依赖外部服务器来获取交易历史记录和广播支付信息。在修复之前,该钱包信任这些服务器报告待处理交易,而没有检查其签名是否有效。
攻击者若控制了其中一台服务器,便可在支付款项到达比特币网络之前将其拦截,并在钱包历史记录中将其替换为虚假交易。这种替换会将用户的比特币花费到攻击者控制的地址,且使用了 Electrum 无法检测到的无效签名。
但钱包随后将这笔虚假付款显示为待处理状态,而当用户试图加快付款速度时,陷阱就出现了。
比特币允许用手续费更高的版本替换未确认的交易,这项功能称为“手续费替换”。如果用户选择了此选项,Electrum 就可以获取欺诈交易并签署有效的替换交易,然后将代币发送给攻击者。
据报道,其中一起恶意交易完全没有手续费,使其看起来像是被冻结了。攻击者还生成了接收地址,其最后四个字符与合法收款地址完全一致,这使得快速检查更难发现这种替换。
第一份报告于10月11日提交,涉及一个使用两台Trezor硬件设备的三重签名钱包中的两重签名钱包。用户在两台设备上都核实了合法付款,但后来发现钱包历史记录中出现了一笔不同的支出交易(该用户并未报告资金损失)。
10月18日,第二位用户报告称,他们在一笔替代交易中提高了手续费,导致蒙受损失。开发商尚未透露被盗金额,也未指明恶意服务器的位置。
作为回应,Electrum 于 10 月 24 日发布了 4.8.3 版本,增加了对未经确认的、使用用户钱包中的代币进行交易的签名检查。然而,早期版本在连接到恶意服务器时仍然容易受到已报道的攻击。