Bleeping Computerは3月22日(米国時間)、「New GoFetch attack on Apple Silicon CPUs can steal crypto keys」において、AppleのM1、M2、M3プロセッサから秘密鍵を窃取可能なサイドチャネル攻撃「GoFetch」が発見されたと報じた。この攻撃手法はプロセッサのデータメモリ依存プリフェッチャー(DMPs: Data Memory-dependent Prefetchers)を使用する暗号化実装を標的とする。GoFetchの詳細は「(PDF) GoFetch: Breaking Constant-Time Cryptographic Implementations Using Data Memory-Dependent Prefetchers」にて公開されている論文で確認することができる。
サイドチャネル攻撃「GoFetch」の概要
一般的に暗号処理は入力に関係なく一定時間で処理を完了するように実装される。これは処理時間の違いから暗号鍵を推定する「タイミング攻撃」と呼ばれるサイドチャネル攻撃を回避するために必要とされる。データメモリ依存プリフェッチャー(DMPs)はCPUが必要とするデータを予測して低速なメモリから高速なメモリ(キャッシュメモリ)へ事前にフェッチする機能とされる。
GoFetchはDMPsがポインタとして推測されるデータをフェッチする動作に着目し、暗号演算の入力を細工することでタイミング攻撃を可能にする。具体的には、秘密鍵を正しく推測した際にポインタのような値が現れるように入力を細工し、DMPsがフェッチを実行するかどうかを監視することで鍵ビットを推測する。
影響と対策
GoFetchはAppleのM1プロセッサに影響があるとされる。M2、M3はテスト対象となっていないが、M1と同様のDMPsの動作が確認されているため、同様に脆弱と推測されている。Intelの一部プロセッサにもDMPsが実装されているが、これらはGoFetchの影響を受け難いとみられている。
研究者たちによると、M3プロセッサはDMPsを無効にすることで影響を回避できるという。しかしながら、M1、M2プロセッサは無効にする方法がないため、影響を回避できないと説明している。
研究者たちはこの攻撃を回避するため、暗号化ライブラリの開発者に対し、DMPsを無効にし、入力を細工できないように実装することを推奨している。一般ユーザーに対しては、ソフトウェアを定期的にアップデートして最新の状態に維持することを推奨している。