GPUThorがECCを回避、NVIDIA GPUでroot権限奪取を実現する攻撃手法

NVIDIAのグラフィックスカードには、データ破損をランダムに検出し自動修復できる専用のエラー訂正メモリが搭載されています。しかし、GPUThorと呼ばれる新たな攻撃手法により、この保護機構すら回避できることが実証されました。メモリ破損やGPU障害を引き起こすだけでなく、root権限に至る特権昇格まで可能になるといいます。

複数のAmpere世代GPUで検証

トロント大学の研究チームは、GDDR6メモリを搭載したAmpere世代のグラフィックスカード(RTX A4000、RTX A4500、RTX A5000、RTX A6000を含む)を対象にGPUThorを検証しました。この攻撃はRowhammer系のエクスプロイトに分類されます。これは、メモリの特定領域に繰り返しアクセスすることで、隣接セルのビット値を意図せず反転させる手法です。

ECCとTarget Row Refreshの回避

こうした破損は通常、メモリエラーの検出と修復を目的とした仕組みであるECC(Error-Correcting Code、エラー訂正コード)によって防がれています。GPUThorは、これに加えてさらなる保護層であるTarget Row Refreshも回避することに成功しています。Target Row Refreshは、メモリ行が不審なほど頻繁にアクセスされた際にそのメモリ行をリフレッシュする仕組みです。研究チームはこれを突破するため、メモリリクエストの順序を再構成し、GPUのメモリコントローラの動作に関する特有の性質を考慮に入れました。

従来手法を大幅に上回る速度

この新手法は、従来の亜種と比べて格段に効果的であることが判明しました。エラー訂正を無効化した状態では、メモリ1ギガバイトあたり72,000から377,000件のビット反転が観測されました。さらなる悪用に利用できる欠陥は、わずか約1.1分で発見できたといいます。これに対し、従来のGPUHammer手法では同じ作業に約21.9時間を要していました。

ECC有効時もエラーは検出されるが訂正不能

エラー訂正を有効にした状態でも、GPUThorは387件のダブルビット障害を引き起こしました。保護機構はこれらを検出したものの、訂正はできませんでした。さらに、データ復旧が誤って行われるトリプルビットエラーも2件発生しています。RTX A6000では、グラフィックスカードが繰り返し再起動し、実行中のすべてのタスクが強制終了されるサービス拒否(DoS)状態も別途実証されました。

破損したページテーブル経由でroot権限へ昇格

さらに危険性の高い検証では、GPUのページテーブルが標的とされました。ページテーブルは、あるプログラムがアクセスを許可されるメモリ領域を決定する仕組みです。このテーブルが破損すると、CUDAプラットフォーム上で動作する非特権プログラムが任意のメモリアクセス権を獲得し、ホストシステム上でrootシェルを開くことに成功しました。研究チームは、NVIDIAのサーバー向けA100アクセラレータでも同様のシナリオが起こり得ると考えています。

NVIDIAの対応と緩和策

NVIDIAは4月29日にGPUThorに関する調査結果を受け取り、8月21日に推奨対策を公表しました。同社は、メモリのエラー訂正機能の有効化に加え、ハードウェアベースのダイレクトメモリアクセス(DMA)分離の導入、GPUエラーの監視、そして信頼できないワークロードの実行制限を推奨しています。研究チームはさらに、可能な限り、クラウドインフラにおいて単一のGPUを複数のテナント間で共有する運用を避けるよう勧めています。

翻訳元: https://meterpreter.org/gputhor-rowhammer-attack-nvidia/

本記事は meterpreter.org の記事を翻訳・要約したものです。