技术支持 文档

比特币衍生品中的衍生路径漏洞

2020 年 5 月 2 日,一位安全研究人员报告了比特币衍生品应用程序(莱特币、狗币等)中的一处漏洞,该漏洞可能被用于诱骗用户签署与自己想要签署的币不同的交易。 

例如,恶意钱包可以利用此漏洞伪装正在进行狗币交易,但实际上让用户签署比特币交易。

当前情况如何?

比特币应用程序 1.4.6 版修复了比特币衍生品应用程序中的问题,将于 2020 年 8 月 5 日发布。在此版本中,每当用户请求地址或试图在通过 Ledger 硬件钱包以外方式打开的币应用程序衍生路径上签署交易时,应用程序都会显示警告。

我该如何保护自己?

在 Ledger Live 管理器中将比特币应用程序更新至 1.4.6 版。所有比特币衍生品应用程序也将随之自动更新。由于此操作仅涉及比特币衍生品应用程序,您可以放心地继续使用其他应用程序。

Bug Bounty Program(漏洞赏金程序)是如何运作的?

Ledger 设立了 Bug Bounty Program 漏洞赏金程序,旨在让外部安全研究人员报告 Ledger 产品中存在的漏洞。一般而言,安全研究人员通过 bounty@ledger.fr 报告潜在漏洞后,会触发下列操作。首先,安全团队会确认收到电子邮件并设置 90 天期限。漏洞确认后即开始调查,亦即:

  • 相关团队会尽其所能在 90 天内修复问题。90 天期限最初由谷歌 Project Zero 提出,如今已经是业内通行做法。
  • 期限截止后,该研究人员方可公布他/她的发现。
  • 如果问题提前得到修复,或者安全研究人员和安全团队双方达成协议,也可以在 90 天期限截止前进行披露。

在此 90 天内,安全团队会协调其他 Ledger 团队(工程、测试等)开发并审核漏洞修复补丁。同时发布 Ledger Security Bulletin(Ledger 安全公告)与通过 Bug Bounty Program(漏洞赏金程序)追踪安全问题报告的外部安全研究人员以及公众分享技术细节。

应用程序或固件有新版本后,提交报告的安全研究人员会获得奖励,同时我们将发布安全公告并允许该安全研究人员公布他/她的发现。

这个漏洞有什么问题?

在此案例中,我们很遗憾没能在披露期限内解决问题,导致安全研究人员在用户尚未获得可用修复之前就在他的网站上发布了相关博文。

除了需要同时处理其他问题,寻找合适修复方案的内部讨论以及协调其他工程团队所花费的时间也比预计的更长。这就导致新版本的比特币应用程序发布时间晚于预定期限(收到漏洞报告后 90 天内)。 

沟通不当无助于尽快解决问题。报告人选择的方式是推特(Twitter)私信,大多数安全工程师都未看到消息。实际上,只有通过 bounty@ledger.fr 的电子邮件地址才能联系到整个安全团队。

是什么漏洞?

Ledger Nano S 和 Nano X 是分层确定性(HD)钱包。此类钱包可凭借用户写入恢复表的 24 词恢复短语中的单个种子获取不同的加密秘密信息。部分私密信息用于签署加密货币交易。

每个应用程序通常都限定于各自特定的 HD 路径。例如,Zcoin 应用程序获准使用自身衍生路径 (m/44'/136’/),无法在狗币衍生路径 (m/44'/3'/) 上获取密钥。此路径限制并不强制用于比特币应用程序及其大多数衍生品,这使得比特币衍生品(例如莱特币)可以获取公钥或签署比特币交易。 

在受害者的计算机或智能手机上安装恶意软件后,攻击者就可以诱骗用户同意签署由 Ledger Nano S/X 应用程序上的代币应用程序而非比特币应用程序发起的比特币交易。

攻击者无法通过该漏洞从 Ledger 设备提取如用于签署交易的私钥等任何秘密信息。攻击者也无法利用该漏洞绕过 PIN 码验证。因此实体设备的安全性不受影响。

更多技术细节参考 Ledger 安全公告 014:比特币衍生品应用程序中的路径衍生过于宽松

为什么显示警告而不是阻止此类交易?

如果阻止此类交易,同样也会导致大量用户资金被锁定。这是早期比特币分叉结构导致的全行业问题 - 从离线签名设备的角度无法区分此类交易。

我的 Ledger 设备显示衍生路径异常或签名路径异常警告,这是什么意思?

如果您看到此警告,说明您正在使用的钱包应用程序并未使用和您所打开的币应用关联的正确衍生路径。在签署该笔交易之前,请核实该衍生路径是否正确。

将比特币应用程序更新至 1.4.6 版可修复所有比特币衍生品应用程序漏洞。此版本不会给 Ledger Live 用户造成可察觉的影响。 

通常在导出的比特币衍生品公钥与应用程序所对应的币类型不符时会,应用程序显示 The derivation path is unusual(衍生路径异常)的新消息。同样地,在签署交易时也会显示 The sign path is unusual. Reject if you're not sure(签名路径异常。如果您不能确定,请拒绝)的新消息。

不过,即使公钥或签名请求来自于合法钱包,使用 Electrum 等第三方钱包的用户也会可能会看到此类警告消息。原因在于此类钱包实际上使用的都是不正确的衍生路径,这些路径对于比特币而言可能也有效。很遗憾,您 Ledger 设备中的应用程序无法判断此类路径是否合法。我们鼓励开发者采用正确的衍生和签名路径。