你的硬件钱包真的安全吗?不用私钥插上就中招:TrezorSafe签名显示错位漏洞(CVE-2026-65058)分析

admin 2026-08-09 05:22:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了TrezorSafe硬件钱包CVE-2026-65058签名显示错位漏洞。该漏洞因固件仅向屏幕展示calldata的首个分块却对全量数据哈希签名,导致攻击者可构造表面为正常转账、实际包含恶意授权的拼接交易。用户无需泄露私钥,仅需连接被污染的终端即可中招。建议受影响设备立即升级至2.8.7固件,并排查代币授权清单。 综合评分: 92 文章分类: 漏洞分析,漏洞预警,漏洞POC,IoT安全,代码审计


cover_image

你的硬件钱包真的安全吗?不用私钥插上就中招:Trezor Safe 签名显示错位漏洞(CVE-2026-65058)分析

原创

YGnight YGnight

night安全

2026年8月7日 21:15 四川

在小说阅读器读本章

去阅读

刷到一个trezor-cve-2026-65058的漏洞项目,主要讲的是 Trezor Safe 的几个型号硬件钱包存在一个高危漏洞。编号为CVE-2026-65058,打分 7.4。经过分析后整理出这篇文章。

一、漏洞情报

影响范围:

| 型号 | 受影响固件 | 修复版本 | | — | — | — | | Trezor Safe 3 | < 2.8.7 | 2.8.7 | | Trezor Safe 5 | < 2.8.7 | 2.8.7 | | Trezor Safe 7 | < 2.8.7 | 2.8.7 | | Trezor Model T / Model One | 不受影响 | |

触发门槛不算高。这个漏洞的利用不需要私钥,主要利用方式是将钱包客户端染毒和利用钓鱼网站,或者终端里提前植入一段恶意程序,这些都够。攻击者提前将一笔早就拼好的交易,等着你插上 Trezor之后立马喂进去。不用诱导输入密码,不用动你助记词。

二、漏洞原理

以太坊每笔交易里有个 data 字段,装的是”调哪个合约、传什么参数”那些指令,行话叫 calldata。普通一笔代币转账也就塞几十字节进去,调复杂合约能拉到几千字节。Trezor 那块小屏一次性塞不下几千字,固件的办法是把 calldata 切成 256 字节一块,分着送进屏里给你看。

这次漏洞的形成就是切法上存在问题,固件 2.8.7 之前那版,只把第一块送给屏,剩下的全丢进缓冲区躺着没下文。等你按下确认,笔动签字的时候,盖的却是所有块拼回去的 SHA256。也就是说,你屏上瞅的那一眼是第一块的内容,钱包实际签字盖的是全部块的内容——两路数据压根没绑死,屏和笔分了家。固件里切分和签字两段真实的写法,我从 PoC 里抠出来给你看:

# 固件按 256 字节一块切 calldata,喂给屏
CHUNK_SIZE = 256

def _split_chunks(self, data: bytes):
&nbsp; &nbsp; return [data[i:i + CHUNK_SIZE] for i in range(0, len(data), CHUNK_SIZE)]

def get_display_content(self):
&nbsp; &nbsp; # 屏只取第 0 块给用户看,其余块进缓冲区躺着
&nbsp; &nbsp; return self.chunks[0]

def hash_for_signing(self):
&nbsp; &nbsp; # 签字时把所有块拼回去一起盖 SHA256
&nbsp; &nbsp; return hashlib.sha256(b''.join(self.chunks)).digest()

这两段代码——屏给你看的是 chunks[0],签字盖的是全部 chunks 拼回去的 hash,中间没有一句代码检验它们是不是同一份东西。核验的代码缺失就导致了问题的形成。攻击方式就是利用这个问题,第一块弄一个正常的转账,第二块往实现攻击行为,合并之后一起喂给设备:

# 第一块:转 0.01 ETH,看上去再普通不过
visible = build_benign_transfer(to=0x742d35Cc..., amount=0.01)

# 第二块往后:给攻击者发一笔无限代币授权
hidden &nbsp;= build_hidden_approve(spender=攻击者地址, amount=2**256-1)

# 拼一起喂给设备——屏只看到 visible,签字盖 visible+hidden
spoofed = visible + hidden

你屏上看到的是”转 0.01 ETH”这么个小事,手指头一按,背后实际签出去的却是这笔无限授权。

三、修复建议

将Trezor Safe 固件升到 2.8.7

修复后可以查询一下自己的钱包对各合约的代币授权清单


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:night安全 YGnight YGnight《你的硬件钱包真的安全吗?不用私钥插上就中招:Trezor Safe 签名显示错位漏洞(CVE-2026-65058)分析》

评论:0   参与:  0