RP2350 の光子放出誘導型レーザー故障注入によるセキュアデバッグアクセス

Ledger Donjon の研究者たちは、Raspberry Pi RP2350 マイコン(A4 リビジョン)に対して成功裏に攻撃を実行し、永続的なデバッグ無効化設定をバイパスしてワンタイムプログラマブル(OTP)メモリからシークレットを回復することに成功した。この攻撃は、光子放出顕微鏡(PEM)とレーザー故障注入(LFI)の組み合わせを活用し、チップのセキュリティ強制チェーンを上書きすることで、攻撃者がセキュア属性を持つデバッグアクセスを獲得できる。

脆弱性:DEBUGEN のオーバーライド

RP2350 のセキュリティモデルは、OTPメモリに格納された永続的な CRIT1.DEBUG_DISABLE フラグに依存している。このフラグが設定されると、コアのメモリアクセスポート(Mem-APs)が永久に無効化され、外部のデバッガーがシステムバスにアクセスできなくなることが意図されている。

しかし、ハードウェアには DEBUGEN と呼ばれるメモリマップレジスタが存在し、この永続的な無効化をオーバーライドできる。DEBUGEN レジスタが設定されると、セキュアソフトウェアが Mem-APs を再び有効化できる。研究者たちは、OTPセキュリティフィールドが冗長符号化と多数決によって誤ってまたは悪意を持って反転するのを防いでいる一方で、DEBUGEN レジスタにはこのような保護が欠如していることに気づいた。この冗長性の欠如が、このレジスタを故障注入の高価値ターゲットにしている。

攻撃手法:PEM と LFI

シリコンダイ上に1つのレジスタビットを見つけることは「針の山の中の針」のような問題である。これを解決するために、研究者たちは2段階の局所化と注入プロセスを採用した。

1. 光子放出顕微鏡(PEM)

トランジスタは状態を切り替える際に微弱な近赤外光子を放出する。セキュアソフトウェアが DEBUGEN レジスタの特定ビットをループ内で切り替え、高感度カメラで発生する放出をキャプチャすることで、ビットの物理的位置を特定できた。異なるビットマスクループの平均スタックを差し引くことで、背景ノイズをキャンセルし、DEBUGEN ビット 0–3 に関連する特定の部位を孤立させた。

2. レーザー故障注入(LFI)

空間座標が特定された後、研究者たちはパルスレーザー(980 nm)を使用して故障を注入した。1つのビットを設定すると、他のビットを誤ってクリアしてしまう可能性があるため、反復的なシーケンスを採用した:PROC1(Mem-APの有効化)の位置をパルスし、その後 PROC1_SECURE(セキュアアクセスの許可)の位置をパルスし、両方が設定されるまで繰り返した。

このプロセスにより、数秒以内にセキュアデバッグアクセスが可能になった。研究者たちは、必要な精度のために50倍の対物レンズが必要であると指摘した。20倍の対物レンズは広すぎて、しばしば「セット」領域と「クリア」領域の両方に同時に影響を与えることになった。

OTP からのシークレット回復

セキュアデバッグアクセスを得た後も、研究者たちはOTPページにランタイムロックがかかっていることに直面した。チャレンジ設定では、ファームウェアがブート直後に sw_lock[48] というランタイムロックを適用し、すべてのアクセス(セキュアデバッグを含む)を無効にする。

これを回避するために、研究者たちは RP-AP レスキューリセット を利用した。CTRL.RESCUE_RESTART コマンドは、フルシステムリセットをトリガーし、ブートROMがユーザーファームウェアが実行される前にプロセッサを停止するようにフラグを立てる。ランタイムロックはファームウェアによってのみ適用されるため、レスキューリセットによりOTPページは永続的なロック状態(LOCK_S = READ_WRITE)に戻り、ファームウェアがロックを強化する前に、今や有効化されたセキュアMem-APを介してシークレットを読み取ることができた。

対策と制限の分析

ソフトウェアベースの対策

研究者たちは、ソフトウェアベースの対策は「ベストエフォート」的なランタイム保護に過ぎないと結論づけた。ファームウェアが ACCESSCTRL を使ってデバッガーのトランザクションをブロックしたり、DEBUGEN レジスタを定期的にチェックしてフェイルセーフリセットをトリガーしたりすることは可能だが、レスキューリセットによりファームウェアが一度も実行されないため、攻撃を防ぐことはできない。

DEBUGEN_LOCK の有効性

DEBUGEN_LOCK レジスタは、DEBUGEN への誤ったソフトウェア書き込みを防ぐために設計されているが、レーザー誘導の変更を阻止できなかった。レーザーパルスは、対応するロックビットが1に設定されている状態でも DEBUGEN ビットを設定でき、場合によってはロックビット自体を設定してしまうこともあり、その後ファームウェアが無効状態を復元できなくした。

攻撃要件と影響

この攻撃は非常にターゲット特化されており、大きなリソースを要する。

  • 物理的アクセス: デバイスはバックサイドデキャップ(パッケージを除去してシリコン基板を露出)する必要がある。
  • 設備: Ledger Donjon が説明したセットアップの費用は約25万ドルである。
  • 専門知識: サンプル準備、ダイナビゲーション、レーザー故障注入に関する高度な知識が必要。

高コストであるものの、コミュニティの議論では、同様の攻撃はより低コストの家庭用ラボ設備(例:PicoEMPなどを使って異なる種類の故障を引き起こす)で再現可能である可能性や、座標がわかればスキャターショットアプローチを用いることで実現可能であるとされている。

結論

RP2350攻撃は、システムレベルでの重要な教訓を示している:セキュリティは完全な強制パスに依存する。Raspberry Pi チームはOTPフラグに対して堅牢な冗長投票を実装したが、変更可能な DEBUGEN レジスタとレスキューリセットの挙動が、研究者たちがチャレンジシークレットを回復できる脆弱性を生み出した。システムのセキュリティは、単一のメカニズムの失敗ではなく、複数の文書化されたハードウェア機能の相互作用によって損なわれた。

Sources

関連