BTCPay Server 2.4.1 及更早版本热钱包被扫空:8 月的补丁,11 月才付账

11 月 1 日,一批自建 BTCPay Server 的运营者发现热钱包里的比特币和莱特币被转走了。BTCPay Server 是开源自托管的加密货币支付处理器,热钱包意味着花钱的私钥就存在这台服务器上。官方 11 月 2 日的调查结论是:攻击针对 2.4.1(2026 年 7 月 23 日发布)及更早版本,而修复早已在 8 月 7 日的 2.4.2 里给出。

事件概述

官方公布的时间线(均为 UTC):11 月 1 日 13:46,一起报告中的钱包清空动作发生;20:56 收到第一封报告失窃的邮件;同日联系包括 LunaNode 在内的 VPS 服务商,请其预防性下线 BTCPay 实例;22:25 在 X 上公开警告,要求运营者先关服务器等待调查;11 月 2 日发布调查更新,锁定受影响版本为 2.4.1 及更早,并说明多家主机商已下线旧实例。

官方在公告里写了一句很实在的话:自 8 月公告之后又发过多个安全更新,”我们本应做更多工作去触达那些仍在跑旧版本的用户”。

技术细节

8 月的原始漏洞公告描述得很清楚:该问题影响 BTCPay Server 的所有版本,未认证远程攻击者可获取 LND(闪电网络实现)的 .macaroon 凭证文件,凭这些凭证接管 LND 节点并转移资金;当时审查的攻击只针对 .macaroon 扩展名的文件。2.4.2 修复的正是这条路径。

而这次的新攻击用的是与 2.4.2 所修漏洞不同的方法。官方没有展开技术细节,也没有说明两批攻击是否同源、攻击者何时开始利用。这种表述值得警惕:它意味着”只堵了 .macaroon 那一条路”的防护思路在这里失效了,攻击者找到的是同一批旧版本上的另一条入口。

官方同时给出了两个被举报的归集地址(比特币 bc1p0f7wm... 开头、莱特币 ltc1qp49t... 开头),但特别说明这些地址上的部分活动早于本次举报的失窃时间,因此其余额不能当作本次损失的确认总额。

影响评估

自托管支付处理器的风险模型跟托管交易所完全不同:交易所丢币是平台赔,自建实例丢币是自己赔,而且丢的是热钱包——为了日常收款能自动结算,私钥必须在线。这类事故的破坏力不在金额大小,而在于”服务器上的一切都要当作已泄露”,包括托管面板、SSH、API、闪电网络凭证。

同期还有一起量级更大的事件可以对照:巴西最大加密交易所 Mercado Bitcoin 因安全事件暂停充提,最初口径为 4,900 万美元,随后更新为涉及资产约 3,800 万美元,并称已联合 Tether、Circle、Paxos 等冻结 1,100 万美元,Tether CEO 确认冻结超 450 万 USDT。两件事并无证据表明相关,但同周发生,说明加密支付链条上的风险正在集中暴露。

修复建议

官方反复强调一件事:单纯升级不能清除攻击者已经取得的权限,钱包余额没变也不能排除早前已被入侵。正确顺序是:

  • 用可信设备和新种子创建新钱包,把热钱包剩余资金扫进新地址;在新服务器上复用旧种子等于没换。
  • 把旧服务器下线,先保留日志与交易记录供调查,再销毁。
  • 全新开一台虚拟机,从可信来源装最新版,接新钱包;不要把整台旧服务器恢复到新机器上。
  • 从可信设备上撤销并更换旧服务器能接触到的一切凭证:主机面板、SSH、应用、API、闪电网络。
  • 热钱包只放日常运营所需金额,其余转入花费私钥不在服务器上的钱包(硬件钱包即可)。

版本方面,2.4.2 起已连发多个安全更新,2.4.7 修掉一枚关键漏洞和若干中危漏洞(由 Anthropic 的 OSS 扫描器发现),官方称目前未收到运行 2.4.7 用户被清空热钱包的可信报告。查版本的方式是登录后看页面底部。

参考来源