阅读,与值得关注的内容Readance

矿井里的金丝雀NVIDIA CMP 170HX:一次软件破解如何让$250矿卡变身$1000的A100

从 Falcon 协处理器栈溢出漏洞到 GPU 硬件产品线的边界消融——面向 GPU 市场销售与决策层的技术解读

一、故事的开头:一张"电子垃圾"引发的硬件圈地震

2026年6月,亚利桑那州立大学研究员 Jon Pry 在 Zenodo 上发布了一篇题为 A Canary in the Crypto Mine: Defeating Stack Protection in a GPU Secure Coprocessor 的论文(DOI: 10.5281/zenodo.20916111)。不到两个月,这篇论文让整个 GPU 市场炸了锅。

故事的主角是 NVIDIA CMP 170HX——一张2021年加密货币挖矿热潮中推出的专用矿卡。它搭载了与数据中心旗舰 A100 完全相同的 GA100 核心及 HBM2e 显存封装,首发售价约5000美元。2022年以太坊转向权益证明(Proof-of-Stake)后,这张卡迅速退役,二手价格一度跌到400-500美元,沦为"电子垃圾"。

然后 Jon Pry 发现了一件事:这堆"电子垃圾"里藏着一张被锁住的 A100。

CMP 170HX 实物

Pasted image 20260906212921.png
Pasted image 20260906212954.png

Pasted image 20260906213112.png
CMP 170HX 是一款无显示输出的被动散热矿卡,采用双槽设计,银色金属外壳。与常见的消费级显卡不同,它没有风扇,需要服务器机箱强制风冷环境才能正常工作。

二、它到底是被"阉割"了什么?

2.1 同芯不同命

CMP 170HX 并非一颗"低端芯片",它和 A100 用的是完全相同的 GA100 硅片。GA100 采用 TSMC 7nm 工艺,集成了约542亿个晶体管,芯片面积达826mm²。GA100 物理封装了6组 HBM2e 显存堆叠(每组16GB),总物理显存容量最高可达96GB。

NVIDIA 没有换芯片,而是靠固件和 OTP(一次性可编程)熔丝把它锁死成了矿卡规格。具体上了四道枷锁:

限制维度
矿卡规格
A100 规格
被限制到的程度
算力(FP32)
0.39 TFLOPS
19.5 TFLOPS
仅保留标称值的 ~2%
显存容量
8-10 GB
40-80 GB
仅暴露物理封装的一小部分
PCIe 接口
Gen1 x1(近似)
Gen4 x16
降速降宽,部分电容未焊接
NVLink 互联
禁用
双路 NVLink 3.0
彻底禁用

2.2 硬件层面的"阉割"手段

在 PCB 上,NVIDIA 还做了物理层面的限制:PCIe x16 物理接口中,部分通道的 AC 耦合电容干脆没有焊接,使得即使固件解锁,要恢复完整的 x16 带宽也需要手工补焊24颗电容。

2.3 被锁住的代价

在以太坊合并(The Merge)之后,CMP 170HX 二手价从5000美元跌至400-500美元。按2024年国内市场的行情,一张10GB版本的 CMP 170HX 只要三五百元人民币——而解锁后,同卡的价格一度被炒到三四千元。

三、漏洞的核心:Falcon 安全协处理器的"纸糊防线"

3.1 NVIDIA GPU 的安全架构

要理解这次攻击,首先需要了解 NVIDIA GPU 的安全架构。NVIDIA 在 GPU 中嵌入了名为 Falcon(FAst Logic Controller)的 RISC 微控制器,负责安全固件任务、初始化和电源管理。

Falcon 运行三种安全模式:

安全模式
缩写
权限等级
说明
Non-secure
NS
PL0
受限模式,无法访问受保护寄存器
Light Secure
LS
PL2
部分状态可见,用于调试
Heavy Secure
HS
PL3
最高权限,固件黑盒,不可读写

在 Ampere 架构中,启动信任链为:




硬件 Boot ROM (SEC2) → HS Booter (SEC2) → LS GSP-RM (GSP)
Pasted image 20260906213251.png

Falcon 处理器具有独立的指令存储器(IMEM)和数据存储器(DMEM),并通过 FBDMA 引擎在外部显存/系统内存与内部存储之间传输数据。正是这个 DMA 引擎,成为了攻击的入口。

3.2 Jon Pry 发现的三个设计缺陷

论文揭示了 NVIDIA Falcon HS 模式下的三个致命设计缺陷:

缺陷一:栈保护金丝雀(Stack Canary)形同虚设

"A per-boot randomized stack canary that provides no protection at all. Its reference word sits in writable memory that the same overflow reaches, so the payload just overwrites the value it will later be checked against."
— Jon Pry, LinkedIn

Falcon 的编译器默认将 __stack_chk_guard(栈保护金丝雀的参考值)放置在数据段末尾。问题是:Falcon 的数据存储器(DMEM)是平坦的、可写的,没有 MPU 只读映射、没有 RELRO、没有保护页。

攻击者利用签名校验流程中一个线性溢出的缓冲区,可以用统一值覆盖整个 DMEM——同时覆盖了 guard 值、栈上的 canary 副本和返回地址。三处值变成相同,校验直接通过。

Pasted image 20260906214116.png

关键洞察:金丝雀的安全性依赖于攻击者无法同时知道金丝雀值和覆盖它。但如果参考值和栈上的副本在同一片可写的内存空间中,攻击者只需用同一片溢出数据覆盖两处——随机性完全无意义。

缺陷二:DMA 操作对静态分析"隐身"

漏洞的入口是一个无边界检查的 DMA 拷贝。LS 签名校验例程通过 DMA 将签名数据从主机传输到 Falcon 的 DMEM,长度来自攻击者可控的结构体字段,目标缓冲区无边界检查。

传统静态分析工具只追踪 CPU 指令和标准库函数,而 DMA 传输在代码层面只是几条寄存器写操作,工具根本无法识别它是一次内存拷贝。 这就是为什么连 NVIDIA 自己的工具链都未能捕获这个 bug——论文指出,NVIDIA 在后续版本中甚至重新引入了这个 bug 作为回归(regression),证明他们的内部审计同样遗漏了它。

缺陷三:确定性环境让离线仿真极为精确

在 HS 模式下,Falcon 的指令和数据存储器对外部不可读写,但由于 Falcon 微码没有并发、没有中断、没有动态内存分配,每个时钟周期的状态是完全确定性的。

研究人员构建了一个周期精确的仿真器(cycle-accurate emulator),离线运行同一份启动镜像,精确重构了溢出发生时的内存布局,无需任何实时反馈。

3.3 攻击链路总结

整个攻击的执行流程如下:




1. Falcon BootROM 将 .fwsignature_ga100 ELF section 内容加载到 DMEM
→ 但签名验证在加载之后才执行(这是 bug)

2. 攻击者用精心构造的 63KB ROP 链替换 section 内容
→ ROP 链是一段有效的 continuation image

3. 溢出覆盖返回地址,跳转到 ROP 链
→ Falcon 的栈校验被绕过(canary 值同时被覆盖)

4. ROP 链执行单次 BAR0 写入 0xFFFFFFFF 到 PLM 目标寄存器
→ 重复四次,分别打开 WPR_CFG、FBPA、WPR、FEAT 四个 PLM

5. PLM 开放后,主机驱动通过 BAR0 写入:
- CFG1/LMR 寄存器 → 解锁显存几何配置
- SS0/SS1 寄存器 → 重新启用所有 SM 簇

6. 恢复原始 GSP 签名,驱动正常初始化
→ nvidia-smi 显示完整显存容量

Pasted image 20260906213728.png
来源:cmp-easyunlock 项目

四、解锁后的效果

4.1 性能对比

指标
解锁前
解锁后
提升倍数
FP32 算力
0.39 TFLOPS
94 TFLOPS
~241x
Tensor Core 算力
~0.3 TFLOPS
~4.5 TFLOPS
~15x
显存容量(8GB版)
8 GB
64 GB
8x
显存容量(10GB版)
10 GB
40 GB(稳定)/ 80 GB(不稳)
4-8x
PCIe 带宽
Gen1 x1
Gen2 x4(软件)/ Gen2 x16(需补焊电容)
显著提升

4.2 实际应用价值

•
LLM 推理:64GB 显存可以运行在 RTX 5090(32GB)上放不下的大模型,推理速度约为 5090 的一半,但显存容量翻倍
•
加密货币挖矿:Pearl 挖矿 150-170 TH/s @ 200-250W,效率 1.25 W/TH,超过 RTX 5090
•
性价比:解锁后的 CMP 170HX 价格约1000-3000元人民币,而同容量显存的 A100 起价3500美元(40GB)/ 11500美元(80GB)

4.3 市场反应

论文发表后,国内 CMP 170HX 二手价从三五百元被炒到三四千元。Tom's Hardware 报道称,eBay 上的国际价格也从约250美元跳涨至1000美元以上,涨幅超过4倍。


五、社区实现:从论文到工具

论文发表不到两个月,社区已经涌现出多个独立的洁净室重新实现:

5.1 主要工具

项目
地址
特点
cmpunlocker
github.com/amoghmunikote/cmpunlocker
修补 nvidia-open 内核模块,持久化解锁,开机自动执行
cmp-easyunlock
github.com/zerobitcopy/cmp-easyunlock
一键脚本,支持 8GB→64GB / 10GB→40GB / 10GB→80GB
d3dx9/cmpunlocker
github.com/d3dx9/cmpunlocker
利用 Falcon BootROM 加载 bug,运行时守护进程每秒重写

5.2 解锁原理

以 cmpunlocker 为例,其核心思路是在 GSP 启动完成之前拦截并重配置 GPU:

•
修补 nvidia-open 驱动,在 kgspPrepareForBootstrap_HAL 阶段注入 PLM 开放序列
•
依次向四个 PLM 寄存器写入 0xFFFFFFFF(开放所有权限)
•
写入 CFG1/LMR(显存几何)和 SS0/SS1(计算状态)
•
恢复原始 GSP 签名,使驱动正常完成初始化

关键寄存器一览:




PLM 寄存器(必须全部打开):
FEAT_PLM    0x00823804  → 0xFFFFFFFF
FBPA_PLM    0x009A0148  → 0xFFFFFFFF
WPR_PLM     0x001FA7C4  → 0xFFFFFFFF
WPR_CFG     0x001FA7CC  → 0xFFFFF0FF
解锁后写入的配置寄存器:
SS0         0x0082381C  → 0x88888888(启用所有 SM 簇)
SS1         0x00823820  → 0x00000008
FBPA_CFG1   0x009A0204  → 8GB卡: 0x02779000(64GB)
→ 10GB卡: 0x02669000(40GB)
MMU_LMR     0x00100CE0  → 8GB卡: 0x0000020B
→ 10GB卡: 0x0000028A

六、技术博客的"金丝雀":这篇论文教给我们的安全教训

6.1 栈保护不是万能的

金丝雀(stack canary)是一种经典的栈溢出防护机制,其安全性建立在三个假设之上:

•
金丝雀值是随机的
•
攻击者无法同时获取金丝雀值和覆盖它
•
金丝雀值存储在攻击者不可达的内存区域

在 Falcon 的实现中,第三个假设被打破了。__stack_chk_guard 的参考值存放在 DMEM 中,而 DMEM 是平坦的、可写的,且溢出缓冲区可以线性覆盖到参考值所在的地址。随机性毫无意义——如果你能重写被比较的对象。

6.2 DMA 是静态分析的盲区

传统安全审计工具追踪的是 CPU 指令流。DMA 传输在代码层面只是几条寄存器写操作,不会被识别为"内存拷贝"。这意味着即使使用最先进的静态分析工具,也很难发现通过 DMA 实现的缓冲区溢出。

这不仅影响 GPU 固件,任何使用 DMA 引擎的嵌入式系统都可能存在类似问题。

6.3 固件读取的熔丝不是安全边界

论文中最发人深省的结论之一:

"A fuse the firmware reads is not a security boundary."

OTP 熔丝是物理不可逆的,但固件读取熔丝后的行为才是真正的安全边界。如果攻击者能控制固件的执行流(通过 HS 模式下的代码执行),熔丝读取的结果可以被绕过。硬件上的物理熔丝 ≠ 软件层面的安全保证。

6.4 AI 与逆向工程的递归循环

Jon Pry 在 LinkedIn 上指出,论文中的逆向工程、周期精确仿真器以及论文本身,大部分都是用 AI 构建的。而社区中的洁净室重新实现,同样大量使用了 AI 工具。

"A card built to mine crypto became, with AI's help, one that can train AI, then got written up and rebuilt by strangers, again using AI, straight from the writeup."

这是一个引人深思的递归:矿卡 → AI 辅助逆向 → 变成 AI 训练卡 → 论文发布 → AI 辅助重新实现。


七、面向 GPU 市场销售与决策层的商业启示

7.1 产品线分化的脆弱性

对于 GPU 厂商而言,CMP 170HX 事件暴露了一个根本性问题:当同一颗芯片通过软件手段被划分为不同产品线时,软件锁的强度直接决定了产品线的商业边界。

如果软件锁可以在几分钟内被绕过,那么"矿卡"与"数据中心卡"之间的价格鸿沟(500美元 vs 11500美元)就没有硬件基础。

7.2 对采购决策的影响

对于 GPU 采购方和决策层:

•
短期:CMP 170HX 解锁版可以作为 A100 的廉价替代方案,尤其适合显存需求高但预算有限的 AI 推理场景
•
中期:需关注 NVIDIA 的驱动更新是否会封堵漏洞。事实上,NVIDIA 的 nvidia-open 驱动 610.43.03 版本是已知可以被修补的版本,但后续版本的启动路径可能不同
•
长期:Ampere 架构已经落后两个代际(Hopper、Blackwell),即使显存容量足够,计算效率和新特性(如 FP8、Transformer Engine)远不如新一代产品

7.3 风险清单

风险
说明
稳定性
解锁后的长期稳定性、高负载温度、显存错误率缺乏第三方验证
散热
原厂为机房强制风冷设计,家用环境通常需要改水冷
驱动支持
依赖特定版本的开源驱动(610.43.03),NVIDIA 可能随时下架
硬件缺陷
部分 GA100 芯片被 bin 为矿卡是因为存在物理缺陷,解锁后可能不稳定
法律与保修
解锁行为可能违反 NVIDIA 用户协议,硬件保修失效
市场炒作
不排除商家借热度囤货炒价,到手的可能是无法解锁的普通卡

7.4 行业趋势

这次事件反映了 GPU 市场的几个深层趋势:

•
AI 算力需求的爆发正在重塑二手 GPU 市场,从"电子垃圾"到"AI 宝藏"的转变可能只需要一篇论文
•
开源驱动生态(nvidia-open)既是安全审计的窗口,也是攻击者的工具——安全与透明的张力持续存在
•
硬件-软件的边界正在模糊,未来的 GPU 产品线分化可能需要更强的硬件级隔离(如物理熔丝 + 不可逆的电气修改)

八、总结

A Canary in the Crypto Mine 不仅是一篇关于 GPU 漏洞的技术论文,更是一面照出半导体行业产品策略、安全工程和市场博弈的镜子。

对于技术人员,它揭示了栈保护机制在特定实现下的脆弱性、DMA 对静态分析的盲区、以及"确定性环境让离线攻击极为精确"这一反直觉的安全原理。

对于市场销售和决策层,它提醒我们:当产品线的边界建立在软件之上时,一篇论文就可能改变整个市场的格局。


参考资料

1.
Jon Pry, "A Canary in the Crypto Mine: Defeating Stack Protection in a GPU Secure Coprocessor", Zenodo, 2026-06-26. DOI: 10.5281/zenodo.20916111
2.
cmpunlocker - GitHub
3.
cmp-easyunlock - GitHub
4.
Tom's Hardware: Nvidia crypto mining GPUs hacked to restore locked-away VRAM
5.
NVIDIA Falcon Security - Open GPU Doc
6.
Linux Kernel Documentation - Falcon (FAst Logic Controller)
7.
Consensus-Protocol/cmp170hx - GitHub (技术参考文档)

前往微信阅读全文

内容来自公众号,可前往微信查看原文。

查看作者的更多文章 →