
2026/11/11 19:48
電圧グラッチングでマイニングカードのA100を引き出すには
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
NVIDIA の GA100 グラフィックプロセッサには、「Fuseless」eFuses を悪用してハードウェア制約を迂回できる致命的な電圧故障注入(VFI)脆弱性があります。PWMVID シグナルをインターセプトし、パワーマネジメント回路に特定の 3 パルス・グリッチパターンを注入することで、研究者らはチップを損傷させることなくセキュリティコントロール (
OPT_SECURED_BURN_FEATURE_ENABLE) をリセットできます。この技術により、計算ユニット(TPC)およびメモリパーティションの「_DISABLE」マスクがクリアされ、物理的に約 80 GB の HBM を搭載しているにもかかわらず制約された 8 GB カード(例:CMP 170HX)が、完全機能の高容量ユニットへと変換されます。これにより、すべての 128 つの物理的な計算ユニットへのアクセスが可能になり、キャパシターマッドを施した GA170HX スキューの場合には PCIe Gen4 の全速度も利用可能となり、通常販売版と比較して約 1.2 倍の高いパフォーマンスが実現します(〜120–126 SMs を使用し、収率安全性重視の 108 SMs に留める標準仕様よりも)。このアンロックにより、NVLink や ECC メモリサポートといった高度な機能へのアクセスも可能となりますが、MIG モジュールなど一部のモジュールについては著者による検証は行われていません。NVIDIA への独立した発見と事前開示の後、この方法はコストパフォーマンスを大幅に向上させる一方で、収率に基づく fuses の制限が無効化されることで業界のセキュリティモデルに挑戦します。本文
GA100 チップ:電圧故障注入によるファス解除と A100 性能解鎖
概要
- 脆弱性の発見: NVIDIA GA100 チップ上で、**電圧故障注入(VFI: Voltage Fault Injection)**を行うことで、任意のファス(Fuse)をブロー(焼損)させることを可能とする脆弱性を発見しました。
- 実装結果: 同手法により、保有する CMP 170HX 8GB カードを実質的に「A100-80G」として機能させることに成功しています。
- 性能向上: 市販用の A100 は収量確保のため一部の SM(スコープユニット)が無効化されていますが、解鎖後のカードは稼働可能なすべての SM(ダイロットによる確率論〜120〜126 個)を有効化しています。
- パフォーマンス: 市販の A100 よりも約 1.2 倍高速で動作します。
- 機能解鎖: NVLink、PCIe Gen4、NVJPG、NVDEC、MIG などの CMP で無効化されている機能もすべて解鎖可能です(一部は個別にテスト未実施)。
GPU のインベントリとトポロジー
- GPU 0: メモリ総量
、デバイス ID081920 MiB0x20C210DE - GPU 1: メモリ総量
、デバイス ID081920 MiB0x20C210DE - CPU アフィニティ: 0–127 | NUMA: 0
nvidia-smi 出力結果(一部)
$ nvidia-smi --query-gpu=index,pci.bus_id,pci.device_id,name,memory.total; nvidia-smi topo -m index, pci.bus_id, pci.device_id, name, memory.total [MiB] 0, 00000000:81:00.0, 0x20C210DE, NVIDIA Graphics Device, 81920 MiB 1, 00000000:C1:00.0, 0x20C210DE, NVIDIA Graphics Device, 81920 MiB GPU0 GPU1 CPU Affinity NUMA Affinity GPU NUMA ID GPU0 X NV12 0-127 0 N/A GPU1 NV12 X 0-127 0 N/A
FP16 FMA スループット比較
| モデル | 市販用 A100 に対する TFLOP/s | 説明 |
|---|---|---|
| 市販用 A100 | 1.00x (72.488 TFLOP/s) | ベースライン |
| ハードウェア解鎖 CMP 170HX | 1.18x (85.858 TFLOP/s) | 生の OpenCL 出力より |
OpenCL 実行結果(一部)
|----------------'------------------------------------------------------------| | Device ID | 0 | | Device Name | NVIDIA Graphics Device | | Compute Units | 124 at 1410 MHz (7936 cores, 22.380 TFLOPs/s) | | FP16 Compute | **85.858 TFLOPs/s** ( 4x ) | | Memory Bandwidth ( coalesced read ) 1883.17 GB/s | -----------------------------------------------------------------------------|
背景と脆弱性概観
- NVIDIA の設計: ファスは製品区分化やセキュリティ機能のために使用されています。通常、ファスをブローさせることで権限を「制限された状態」にするのが目的ですが、GA100 チップでは**「より多くのアクセス権」**を得るための関数も存在します。
- リスク: 適切に設計されたシステムでは、ブローされたファスは元に戻せませんが、NVIDIA のこの設計では、さらに多くをブローすることで制限を緩和することが可能です!
- 謝辞: 本研究は Jon Pry および GA100 チップの仕組みを理解する多くの先行研究の上に構築されています。脆弱性の情報は一般市民にとって最善の利益であるため、独立した研究者が発見直後に公表しました。発表前に NVIDIA の製品セキュリティチームへ開示済みです。
GA100 バージョンと SKU 比較
GA100 は A100 をはじめ約 20 の異なる SKU に搭載されています。製造時の状態では以下の機能が含まれていますが、NVIDIA は収量制御のため eFuses(エレクトロニカル・フュージ)を使用し、未差別化のチップを制限されたバリエーションに変換しています。
表:SKU 比較(箱出し状態 vs ソフトウェア解鎖 vs VFI)
| 機能 | CMP 170HX 8GB | CMP 170HX 10GB |
|---|---|---|
| フレームバッファ | 8 GB -> 64-80 GB (VFI) | 10 GB -> 40-48 GB (VFI) |
| SM (スコープユニット) | 70 -> 120-128 (VFI) | 70 -> 120-128 (VFI) |
| PCIe ジェネレーション | Gen 1 -> Gen 4 (VFI) | Gen 2 -> Gen 4 (VFI) |
| NVLink | なし -> あり (VFI)* | なし -> あり (VFI)* |
| ECC | なし -> あり (VFI)** | なし -> あり (VFI)** |
| MIG (Multi-Instance GPUs) | なし -> あり (VFI)** | なし -> あり (VFI)** |
| NVDEC | 0 -> 54 (VFI)*** | 0 -> 54 (VFI)*** |
- *: NVLink 有効化には PCB の部品追加が必要です。
- **: 未テスト。
- ***: VFI はダイの収量に基づいて構成を有効にします(以前はより高い値が主張されていましたが、特定の構成に限られます)。
ハードウェア制限とファス機構
NVIDIA は一つのチップからデータセンター用 A100 とマイニング用 CMP の両方を製造するためには、ファスコントローラーの仕組みを理解する必要があります。
ファスコントローラーの役割
- 構造: 16,384 個(32 コラム×512 ラウ)の eFuses と論理回路から構成されます。
- 機能:
- ファスの読み出しとプログラミングを実行。
- 下の層にあるフーゼを保護。
- チップ動作や有効化機能を決める**「オプションワード」**を提供。
eFuse の分類
各 eFuse は 2 つの状態(ブロー済み=1、未ブロー=0)のいずれかであり、512 ラウは以下の 4 つの領域に分けられます。
- 通常のフーゼ (Rows 0-221)
- 単一(ペアの)フーゼがオプションワードに対応(例:
)。OPT_ENABLE_FUSE_PROGRAM - プライマリとレダンダントという冗長性を持つ。
- 不可逆: ブローすると恒久的に元に戻せません。
- 単一(ペアの)フーゼがオプションワードに対応(例:
- ファスレスフーゼ (Fuseless fuses, Rows 222-487)
- JTAG チェーン形式でオプションワードを符号化するシステム。
- VFI を使用して解鎖できる大部分の機能に関係。
- 可逆的: 新しい FF ラウを書き込むことで容易にクリア可能(通常条件下では禁止)。
- IFF fuses (Rows 487-512)
- 本稿のスコープ外ですが、ファスコントローラーのオンザフライ再プログラミングに有用。
- 生産用カードではアクセス不能。
- RIR fuses (512 ラウ以外の領域)
- TSMC から提供される「ファス修復」機構。
- 8 GB の CMP では、16 ワードのうち 15 個が「noop(何もしない)」であり、実用的ではありません。
ファスレスフーゼレコード形式
各 FF ラウは 32 ビットのレコードです。後方のレコードが優先されます。
- 例:
はチェーン 1、ブロック 23、データ0x0fe805c1
を意味します。0x0fe8 - 動作: 物理的に元に戻せず、新しいラウが古い 16 ビットブロックを置き換えます。
重要なオプションワード(-disable)
以下の表は、GA100 の解鎖においてクリアすべき
_DISABLE オプションワードを示しています。
| 命名されたオプション | 推測された FF ロケーション | 用途 |
|---|---|---|
| チェーン 1 ビット 83-106; ブロック 5-6 | メモリ I/O フロアスイープ(遮断) |
| チェーン 1 ビット 107-130; ブロック 6-8 | メモリサブパーティションフロアスイープ |
| チェーン 1 ビット 131-138; ブロック 8 | GPC フロアスイープ |
| チェーン 1 ビット 187+8i...; ブロック 11-15 | 8 つの TPC マスク |
| チェーン 1 ビット 251-274; ブロック 15-17 | PES フロアスイープ |
| チェーン 1 ビット 307-318; ブロック 19 | フレームバッファパーティションフロアスイープ |
| チェーン 1 ビット 319-342; ブロック 19-21 | ROP/L2 フロアスイープ |
| チェーン 1 ビット 368-370; ブロック 23 | NVLink 無効化マスク |
| チェーン 2 ブロック 39 (ビット 1/9 未確定) | PCIe Gen3 スピード制限 |
| チェーン 2 ブロック 47 ビット 3 | Gen4 スピード無効化フラグ |
| - | ソフトウェアオーバーライド解除(最重要) |
重要: フロアスイーピング (Floorsweeping) は、オプションが電源オフ状態にする処理を指します。機能構成ワードを変更するだけでは不十分で、FF 書き込みによる「フロアスイープ解除」が必要です。
電圧故障注入 (VFI) の仕組み
ファスブローには
FUSEADDR, FUSEWDATA, および FUSECTRL レジスタへの書き込みが必要ですが、通常ホストはこれらにアクセスできません。「暗号マイニングにおける Canary(カンアリ)への ROP」を開発し、権限レベルのマスクを開放しました。
鍵となるオプションワード:SBFE
- OPT_SECURED_BURN_FEATURE_ENABLE (SBFE):
- すべての生産用カードでは
に設定されています。1
の場合: FPF(保護済みフーゼ)のみブロー可能。FF フーゼを焼損させる方法はない。1
の場合: 任意のアドレスでファスプログラミングが可能。これが解鎖の鍵です。0
- すべての生産用カードでは
グリッチャー(故障注入器)のセットアップ
- 設計: GPT-6 Astra に依頼し、CMP PCB の PWMVID シグナルにアクセスする STM32G4 ベース基板を設計しました。
- 動作:
- NVIDIA の標準電圧レギュレータ規格(PWMVID)をインターセプト。
- MP2888B VRM ドライバー IC に独自の波形を供給する。
- 接続要件:
- NVVDD から電圧検出用のタップ。
- PWMVID シグナルをタップ。
- GA100 と VRM IC 間の 0402 0Ω抵抗を取り外す。
グリッチシーケンスと結果
手順
- カードの電源オフ → 電源オン(ACPI S0 -> S3 -> S0)。
- NVVDD が閾値を超えた直後にタイマーをスタート。
- タイマー同期で PWMVID を発火し、電圧波形を実行。
- 動作を観察し、必要に応じて再試行(グリッチ時間:1〜48 時間)。
実験的モデルと結果
起動ステージの推測は以下の通りですが、重要な発見が**「ゴールドロックス・グリッチ」**です。
| 現象 | 結果 |
|---|---|
| すべてのフーゼがゼロとして検知される | 壊滅的故障。PCIe Gen4 がトレーニング可能だが、カードは unusable。 |
| RIR 読み込みの妨害 | RIR データ変更が見られるが、解鎖には至らない。 |
| ゴールドロックス・グリッチ(成功) | ラウ 0/1 のオプションワードのみを妨害し、他は無傷。 * が 0。* SBFE が 0。 * PCIe ID: 。* これにより任意のファスアクセスが可能になる。 |
突破のポイント:
- 初期状態では
=0 でしたが、ENABLE_FUSE_PROGRAM
コマンドを発行することで制御フーゼ由来のオプションワードをブロー値へ移行させることが可能になりました。SENSE_CTRL - 例外:
は 0 に留まりますが、これが解鎖のカギです。DISABLE_SW_OVERRIDE
=0 → SBFE が 0 設定可能。DISABLE_SW_OVERRIDE- SBFE=0 →
=1 となり、PLM をシャドウ化してホストによるアクセスが可能になります。ENABLE_FUSE_PROGRAM
最終結果と解鎖後の状態
- フレームバッファ: CMP 170HX 8GB の約 90% で、64-80 GB のフレームバッファに拡張されました(vLLM, SGLang 等完全動作)。
- コンピュート: SM 数が 70→120〜128 個へ増加し、市販 A100 よりも約 1.2 倍高速です。
- PCIe Gen4: FF オプションワードがクリアされることで達成可能(コンデンサ修正と組み合わせ必要)。
- NVLink:
をゼロ化することで有効化可能(PCB 追加部品が必要な場合があります)。OPT_NVLINK_DISABLE - MIG/NVDEC: これらの機能も解鎖されました。
将来の方向性
任意のファス焼損により、主に機能解鎖が可能になります。セキュリティ上の敏感性を持つオプションはデフォルトでブローされていない状態で出荷されており、これらを焼損することで新たなフーットホール(入り口)につながる可能性があります。また、多くのデフォルトブローされたセキュリティフーゼを未ブロー状態に保つ深いグリッチ状態も、デバッグ用 HS 実行などのルートとして利用可能です。
リファレンス
- Jon Pry, A Canary in the Crypto Mine: Defeating Stack Protection in a GPU Secure Coprocessor (2026).
- Amogh Munikote, cmpunlocker (2026).
- Otto Bittner et al., The Forgotten Threat of Voltage Glitching: A Case Study on Nvidia Tegra X2 SoCs (2021).
- NVIDIA, US9230678B2: Integrated circuit having an enhanced fuseless fuse structure (2016).
- TSMC, TEF07F32X32HD18_PHRM_C180518 electrical fuse datasheet, rev. 120A (2018).
- hexkyz and SciresM, Je Ne Sais Quoi - Falcons over the Horizon (2021).
- TechPowerUp, NVIDIA GA100 GPU specifications.
- GA100VFI ソースリポジトリ。