研究人员展示了某些硬件密币钱包的安全性有多脆弱。安全专家测试了 Trezor One、Ledger Nano S 和 Ledger Blue 应对供应链和侧信道攻击的能力,找到了多个芯片级和固件级的漏洞。
研究员 Dmitry Nedospasov、ThomasRoth 和 Josh Datko 在6月份开始研究工作,并设法找到了多种攻陷目标密币钱包安全的方法。
在周四举办的混沌通信会议 (3C) 上,研究人员展示了攻击者如何在抵达终端用户之前篡改设备或以伪造的变体替代。
厂商使用安全贴纸作为钱包盒子或设备本身外壳的“封条”。完整的贴纸可以保证没有人能触及钱包或它的电子元件。
然而,Josh Datko 证明,只要攻击者使用吹风机且不使用高温档,那么这种防篡改保证就并非不可逾越的障碍。
Datko 能够从 Trezor One 盒子和 Trezor T 的 USB 端口移除贴纸。他表示并未留下任何痕迹,但如果仍能看到胶水的痕迹,那么可以使用专为电子设备的液体进行清洁。
Ledger 设备上并不存在防篡改封条,每次启动时都会执行完整性检查。厂商还表示,“安全元素”芯片“阻止任何拦截或物理替代尝试”。
完成绕过安全贴纸挑战后,Datko 转而打开钱包的外壳,而这项工作太过简单,打开后他能够访问其中的硬件组件。
Datko 指出,能够在替换 Trezor 钱包中的微控制器。“一旦在 Trezor 设备上完成了这项工作,那么就能将入侵程序放进去。”虽然他跳过了这个挑战,但表示他能够连接硬件调试器并自由访问芯片,从而允许使用恶意代码重新刷新组件。
Datko 进一步研究后,通过一个便宜的硬件植入攻陷了 Ledger 钱包,从而在没有用户干预的情况下批准了交易。
仅需3.16美元,通过无线电频率就能远程触发(至少距离11米,使用 50W 的发射器)开关完成攻击。虽然存在这种篡改可能,但 Ledger 钱包绕过了 Windows 上的正式测试。
在软件方面,研究员通过对固件升级程序进行了逆向工程,结果找到一个可允许他们在设备上写入自定义固件的漏洞。
厂商为 boot 命令添加了一些保护措施,相当于使用加密函数的固件图像的合法性。如果验证通过,那么就会将常量 0xF00BABE 写入内存地址。由于只进行一次检查,因此并非每次启动设备时都会启动它。这样做的目的是将常量 0xF00BABE 写入特定地址。
事实证明,Ledger 通过将整个内存区列入黑名单的方式防止意外引导加载程序闪烁情况的出现。研究人员利用这一点将常量写入未被列入黑名单的地址并将其映射到被接受的地址中。
研究人员通过游戏“蛇”的某个版本,使用设备上的两个按钮控制蛇的动作使芯片闪烁,验证了这种方法是成功的。
Thomas Roth 分析了 Ledger Blue 的内部结构后,发现其中装有一根长导体,用于将信号传递到屏幕上。当设备连接到 USB 时,它就充当天线而且其信号被放大。
研究人员使用软件定义的无线电设备捕获无线电波并分析其模式,解码发送到屏幕上的内容是什么。
Roth 创建了一个框架,通过在屏幕上输入 PIN 数字来自动记录训练信号,并使用人工智能模型将其转换为适于人类的信息。结果的准确性相当高,超过了90%,只有一个预测是错误的。
在 TrezorOne 上的操作是由微控制器 (STM32F205) 控制的。2017年,该微控制器被指易受故障注入攻击。
去年,Datko 无法判断是否可通过故障注入利用 Trezor,不过在这次3C大会上得出了一个不同的结论。
这三名研究人员通过观测启动过程和升级程序,找到了从 RAM 中提取种子密钥或私钥的方法,能够访问密币资金且可转移这些资金。
Trezor One 备份了密钥等数据并将其拷贝到 RAM 中。研究人员给出的解决方案是启动固件升级程序并在清理 RAM 之前停止升级。检查 RAM 内存转储会暴露种子密钥和 PIN 码。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/123592.html