核心要点
1. 版本 1.7.1 仅轮换登录签名密钥。
2. 钱包密钥和后端凭证需要手动轮换。
3. LND 宏卡(macaroon)在删除后,直到根密钥更改前仍有效。
4. 应从全新服务器开始轮换,优先处理后端。
警告来自 LNbits 自身:其 11 月 10 日发布的安全公告指出,升级前泄露的凭证可能仍会让攻击者在升级后保持访问权限。该漏洞于 11 月 8 日被发现。当天,LNbits 发布的第一条公开指令是禁用 Paywall 扩展;几小时内,它告知运营商完全关闭服务器,并下线了其托管实例。11 月 10 日发布了 1.7.0 版本,公告称所有早期版本均受影响,其中的资金面临风险。项目创始人 Ben Arc 表示,项目和用户均遭受了损失。LNbits 承诺将发布一份关于利用机制的详细报告,因此具体机制仍未公开,以下内容不应被视为对其的描述。
1.7.1 版本于 11 月 11 日发布。其发行说明只有一行字:“轮换认证密钥”,并链接回恢复公告。提供 StartOS 服务器的 Start9 软件包详细解释了这一含义:认证签名密钥被替换,现有的登录会话停止工作,运营商仍需重置钱包密钥、更换资金来源凭证,并重新连接应用程序和扩展。用 Start9 的话说,仅更新不足以移除访问权限。
因此,该更新仅处理一种凭证:服务器用于签署登录请求的密钥。持有会话令牌的攻击者将被登出。但持有其他任何东西的攻击者则不会受到影响。
更新未触及的三种凭证
LNbits 部署涉及三种类型的秘密信息,每种都由不同的系统进行验证。
钱包密钥
每个 LNbits 钱包都有一个管理密钥(Admin key)和一个发票密钥(Invoice key)。管理密钥可以发送付款和管理钱包;发票密钥可以创建发票并读取余额和支付历史,但不能花费。复制的管理密钥会导致资金被盗的风险;复制的发票密钥则是隐私问题,它会向外部人员暴露钱包的确切余额及收款时间。除非操作员在 LNbits 内部重置它们,否则这两种密钥均保持有效。
资金来源凭证
LNbits 本身不持有比特币。其架构在内部跟踪余额,并将实际付款交给连接的后台节点(如 LND 或 Core Lightning)、Phoenixd 或其他支持的资金来源。该连接的凭证存储在 LNbits 的设置中,公告指示运营商将存储在那里的所有内容视为已泄露。重置钱包密钥对此无效,1.7.1 版本的更新同样无效。
应用和设备连接
任何从外部与钱包通信的应用都携带自己的连接字符串:包括 TPOS、Bleskomat 和 FOSSA 等 POS 和终端扩展,Bolt Card NFC 卡片,以及 LNDHub 和 NWC 提供商等钱包应用桥接工具。公告列出了这些需要审查和重建的连接。每个连接在设置时都会获得一个凭证,该凭证会保留在其写入的文件、卡片或手机中,直到连接被重新创建。
为什么删除密钥不等于吊销密钥
恢复过程最容易出错的地方在于资金来源层,因为凭证是由节点验证的,而不是由 LNbits 验证的。Lightning Labs 关于 LND 宏卡(授权节点操作的持有者凭证)的文档明确指出:从磁盘上删除宏卡文件并不会撤销他人已经拥有的副本。节点仍会继续接受它,因为节点是将宏卡与根密钥进行比对检查,而根密钥并未更改。
吊销意味着对根密钥采取行动。删除根密钥 ID 会立即使基于该根密钥生成的所有宏卡失效,包括攻击者的副本以及其他使用相同根密钥的服务所获得的副本。如果操作员在未列出这些服务的情况下进行轮换,当某些服务停止身份验证时,他们才会发现自己遗漏了哪些服务。
其他后台系统也有类似的机制,例如 Core Lightning 的运行规则(runes)、托管提供商的 API 密钥,对所有这些系统都适用相同的测试标准:验证凭证的系统是否已被告知拒绝旧凭证?还是仅仅从 LNbits 端移除了旧凭证?
为何伪造的加密货币买家即将付出高昂代价
(注:此处原文标题可能存在语境缺失或隐喻,直译为“为何假冒的加密货币买家即将变得昂贵”,意指攻击成本上升或后果严重。根据上下文,重点在于恢复顺序。)
恢复的顺序
公告建议在怀疑遭到入侵时使用全新的服务器,首先保留旧服务器的日志和记录。原因很简单:将新凭证粘贴到攻击者仍然控制的服务器上,等于让攻击者也获得了新凭证。因此,必须遵循以下序列:
- 从旧服务器导出日志、数据库和记录以供调查,然后停止旧服务器。
- 构建一台干净的服务器,并在任何其他程序运行之前安装 1.7.1 版本。
- 在后端进行吊销操作,轮换 LND 根密钥、运行规则或提供商 API 密钥,然后再向 LNbits 颁发新凭证。
- 重置所有钱包的管理密钥和发票密钥。
- 重新创建每个仍需要的应用、卡片和终端连接,并删除其余连接。
- 测试旧凭证,而不仅仅是新凭证:使用已退役的管理密钥或旧宏卡签名的请求应被拒绝。
轮换后的迹象解读
- Checkout 与新密钥一起工作: 新路径已上线。这并不说明旧路径的情况。
- 终端或应用停止登录: 预期行为。其存储的凭证已退役;需重新连接。
- 余额看起来正常: 并非证据。复制的发票密钥读取的是相同的屏幕界面。
- 旧密钥仍返回数据: 吊销未到达验证该系统的位置。
凭证被复制与资金转移之间的延迟模式,与 Coindoo 描述的在资金消失前数月就开始的加密货币盗窃模式相同。这里的区别在于,API 凭证可以被吊销;而泄露的种子短语只能被放弃。
如果你使用的是他人的 LNbits 实例
托管实例上的用户无法重建服务器或轮换节点的密钥。他们可以做的只是询问三个问题:实例运行的是哪个版本?升级后他们的钱包管理密钥和发票密钥是否已重置?哪些连接的应用或卡片需要重新设置?如果运营商无法回答第二个问题,那么钱包所处的状态与 11 月 10 日之前无异。
漏洞报告将厘清的事项
LNbits 承诺的报告应回答攻击者触及了哪一层以及如何触及的。在该报告发布之前,恢复公告是基于最坏情况编写的,即所有存储的秘密均已泄露。对于已经按照上述列表操作的运营商来说,他们已经完成了项目要求的步骤。而对于仅进行了更新的运营商,他们只是关上了攻击者进入的门,却让他们沿途获取的所有密钥仍在发挥作用。