风险提示:理性看待区块链,提高风险意识!
Kraken 安全实验室发现针对 Ledger Nano X 钱包的供应链攻击
Kraken交易所APP下载 > Kraken 安全实验室发现针对 Ledger Nano X 钱包的供应链攻击 2025-10-29 09:54:02
摘要
Kraken 安全实验室发现了两种新的攻击,如果恶意行为者成功实施,可能会危及 Ledger Nano X 钱包所有者的安全。这些攻击会影响在用户收到钱包之前被篡改的钱包,例如在运输过程中被拦截或从恶...

Kraken 安全实验室发现了两种新的攻击,如果恶意行为者成功实施,可能会危及 Ledger Nano X 钱包所有者的安全。

这些攻击会影响在用户收到钱包之前被篡改的钱包,例如在运输过程中被拦截或从恶意经销商处购买时可能发生的情况。

如下所示,这些攻击可能允许恶意行为者控制连接到钱包的计算机并安装恶意软件,这可能会导致存储的资金丢失或被盗。

坏账本

在这种情况下,使用调试协议修改非安全处理器的固件,使其充当输入设备(如键盘),然后可以将恶意击键发送到用户的主机。

Ledger Nano X 在其非安全处理器上启用了调试功能,该功能在设备上安装第一个“应用程序”(例如比特币应用程序)后立即被禁用。

然而,在安装任何应用程序之前,设备可能会被重新刷新恶意固件,从而危及主机安全,类似于“ BadUSB ”和“ Rubber Ducky ”攻击。

上面的概念验证视频展示了一台被感染的 Ledger Nano X,它在连接到电脑时可以充当键盘。使用键盘快捷键,它会打开浏览器并导航到www.kraken.com。

或者,受感染的 Nano X 可能在受害者的设备上执行了恶意软件。Ledger Nano X 设备和 Ledger Live 软件应用程序均未显示篡改迹象,也无法识别该设备是否为正品。

盲账簿

非安全处理器控制的单个连接允许其重置显示器。因此,在非安全处理器上运行的恶意代码可以关闭显示器,即使它仅依靠电池供电。

这可能被用作精心设计的社会工程攻击的一部分,受感染的 Ledger Nano X 会关闭其显示屏,而计算机上的恶意软件会诱使用户按下一系列按钮来批准恶意交易(例如,“您的 Ledger Nano X 停止响应,请按住两个按钮以重新启动设备”)。

由于显示被禁用,用户将不会注意到或无法验证硬件钱包上的交易。

您可以采取以下措施来保护自己:

只从值得信赖的商店购买 Ledger 设备。不要将免费赠送的或在停车场找到的 Ledger Nano X 插入电脑。

务必验证 Ledger Nano X 钱包上的交易。如果设备出现异常(例如,显示屏关闭),请务必小心。

在 Kraken 安全实验室,我们致力于抢在攻击者之前发现针对加密货币用户的攻击。在发现这些攻击后,Kraken 安全实验室于 2020 年 4 月 9 日负责任地向 Ledger 团队披露了这些攻击的全部细节。您可以访问https://donjon.ledger.com/lsb/013/查看 Ledger 团队的回复。

技术细节

Ledger Nano X 是 Ledger Nano S 硬件钱包的制造商 Ledger 推出的最新硬件钱包。Ledger Nano X 和 Ledger Nano S 的主要区别在于:

添加蓝牙作为通信方式

通过蓝牙使用时,可使用小型电池供电

较新的意法半导体 ST33 安全处理器(Nano S 使用 ST31 进行安全处理,两个钱包均使用 STM32 作为非安全处理器)。ST33 安全处理器提供了更多 I/O 引脚,这使得 ST33 可以直接连接到 Ledger Nano X 上的显示屏和按钮。这与 Ledger Nano S 不同,后者需要将这些外设连接到“非安全”的 STM32 处理器。Wallet.Fail 团队在 35C3 上展示的几次攻击都利用了旧款 Nano S 的这一限制。

攻击研究中发现的问题

Ledger 在其网站上声明,STM32WB55 处理器上启用了 JTAG,以便最终用户验证 STM32WB55 是否被篡改:

图 1:关于保持 JTAG 启用状态的 Ledger FAQ 条目。

这具有误导性,因为 Ledger 目前实际上并没有发布任何哈希值,从而可以根据已知的固件映像检查内存内容。

Ledger 声明“任何签名应用程序启动后,JTAG 通道将永久关闭,无法重新打开”。然而,研究人员发现 STM32WB55 在运行时根本没有进行验证。因此,即使恶意固件中已删除了签名应用程序启动后锁定 JTAG 的代码,它也能正常运行,甚至不会被 ST33 检测到。Ledger Nano X 固件的 PoC 补丁可以按如下方式实现:

图 2:用于保持 SWD 启用的 binway 补丁示例。(红色标记修改后的字节。)

此更改不会对设备的行为产生不利影响,设备仍可正常运行。此外,Ledger Live 应用程序仍会继续报告该设备为正品:

图 3:Ledger Live 应用程序无法检测修改后的 STM32WB55 固件。

为了更轻松地使用 JTAG 对 STM32WB55 进行编程,我们将 Ledger Nano X 焊接到分线板上,以便使用标准化 ST-Link 接口轻松访问所有编程引脚。在实际攻击中,由于固件只需修改一次,即在安装任何应用程序之前,因此可以使用弹簧式 pogo-pin 接口。这样做的好处是,它与正常制造过程中使用的编程方法没有区别,并且不需要对整个设备进行任何额外的修改。

图 4:修改后的 Ledger,方便编程访问

坏账攻击

在 Ledger Nano X 上,主机和硬件钱包之间的所有 USB 通信均由 STM32WB55 处理器处理。因此,通过在 STM32WB55 上执行恶意代码,攻击者无需修改硬件,即可将真正的 Ledger Nano X 改造成恶意设备。由于 STM32WB55 控制所有 USB 通信,执行恶意代码的 Ledger Nano X 可以向主机表明自身身份,并使其行为类似于任何 USB 设备。例如,恶意固件可以实现所有必要的 USB 通信,向主机 PC 表明自身身份并模拟 USB 键盘。然后,该固件可以发送标准键盘扫描代码,以当前已验证用户的身份执行恶意命令。

我们开发了一个概念验证程序,当该设备插入运行 Mac OS 的电脑时,会打开https://www.kraken.com,然后启动原始 Ledger 固件。Ledger Live 应用程序无法检测到这种篡改行为,因此将该设备识别为正品。

盲账攻击

在 Ledger Nano S 上,只有较老的 ST31 安全处理器是受信任的。然而,显示屏、按钮和 USB 均由“非安全”的 STM32F0 处理器控制。因此,在非安全处理器上执行的恶意固件可以通过模仿用户输入来绕过安全元件,例如确认恶意交易。

在 Ledger Nano X 上,这种攻击已不再可能发生。Ledger Nano X 的一项重大设计变更是架构上的改变,其中外设(即显示屏和按钮)直接由 ST33 安全处理器连接和控制,而不是“不安全”的 STM32WB55.在分析底层硬件的过程中,发现 ST33 确实控制着按钮和显示屏。但是,在 STM32WB55 的 GPIO 引脚和显示屏之间发现了单一连接。通过使用通过 JTAG/SWD 接口连接的调试器设置的值来驱动此引脚,发现其行为类似于显示器的复位引脚。将相应 GPIO 引脚的输出数据寄存器 (ODR) 位设置为 0 会关闭显示屏,同时设备继续正常运行。

一旦显示屏关闭,用户就无法识别显示屏上输出的内容,也无法确定设备是否正在运行。从外部来看,设备似乎已关闭,但实际上仍然能够接受用户输入。此外,该设备仍然可以与主机PC(包括Ledger Live应用程序)通信。

能够将恶意固件刷入 STM32WB55 的恶意攻击者可能会将此攻击与社会工程学结合起来。例如:

首先,一个恶意固件映像被烧写到 STM32WB55 上。该恶意(后门)固件包含代码,用于在满足特定条件时关闭显示屏。接下来,在主机 PC 上运行的恶意应用程序(例如恶意版本的 Ledger Live 应用程序)可以显示一条消息,例如“您的 Ledger Nano X 停止响应,请按住两个按钮重启设备”。通过与 Ledger Nano X 上正在执行的恶意固件通信,ST33 接收并显示恶意交易。用户会不知情地被诱骗,按照 PC 上运行的恶意应用程序的指令,按下 Ledger Nano X 上的物理按钮来确认交易。

图 5:将此位设置为 0 将禁用显示,但不会停止设备正常工作。

继续研究

在本次研究中,官方 Ledger Live 应用无法在 Mac OS Catalina 上启动,因为它未使用官方 Ledger 开发者账户签名。Ledger 官方针对此问题的指导是一套指导用户如何绕过强制代码签名的说明,这使得用户面临打开恶意 Ledger Live 版本的风险。

值得注意的是,我们没有测试在最初研究时(2020 年 4 月 9 日之前)尚未提供的任何内容,特别是 ST33 固件的软件更新或用于为 Ledger 开发应用程序的 SDK,因为 Ledger 尚未发布这些内容。

作为我们协调披露的一部分,Ledger 于 2020 年 7 月 8 日发布了固件更新来解决这些问题。

版权说明:本文章来源于网络信息 ,不作为本网站提供的投资理财建议或其他任何类型的建议。 投资有风险,入市须谨慎。

相关阅读