2019年に公開されたBootROM脆弱性「checkm8」はiPhone 4S(A5)からiPhone X(A11)までのデバイスに影響しましたが、usbliter8はその次の世代であるA12/A13搭載機種を新たに標的としています。
一方、A11チップは影響を受けません。これは、A11のUSBドライバーがパケット処理後に毎回DMA(ダイレクトメモリアクセス)ポインターを手動でリセットするためです。また、A14以降のチップではSecureROM内でUSB DART(メモリ保護)が正しく構成されているため、本脆弱性は悪用できません
。
リングバッファポインターの不整合: コントローラーは最大3つの連続したUSB SetupパケットをDMAバッファに格納します。書き込み後はデータサイズ分だけハードウェアポインターを進め、3つ目のパケット後は固定値の24バイト分だけポインターを戻します。
異常に小さいパケットの送信: USBコントローラーは標準の8バイト未満のパケットも受け付けますが、常に4バイト単位で整列して格納します。このとき、ポインターの増分(実際に書き込まれたデータ量)と固定減分(24バイト)が一致せず、12バイト単位でポインターがメモリ上を逆方向に移動する「バッファアンダーフロー」が発生します。
メモリの上書き: これにより、攻撃者は起動時にアクセスが許可されていないSRAM領域(スタックデータやヒープメタデータ)を上書きできるようになります。
コード実行: A12チップでは、攻撃者はUSBタスクのスタック上に保存されたリンクレジスタ(LR)を上書きし、プログラムカウンタ(PC)を直接乗っ取ることができます。一方、A13チップではPAC(ポインター認証コード)が導入されているため、攻撃は複数のステップを要し、ヒープのチェックサムやパニックカウンターを回避する高度な手法が必要です。
BootROM(SecureROM)は、チップが電源投入時に最初に実行するコードです。これはチップ製造時に読み取り専用メモリ(ROM)に焼き付けられ、デバイスが出荷された後は変更が一切不可能です。脆弱性の根本原因がUSBコントローラーのハードウェアバグであるため、AppleはファームウェアやOSのアップデートでこれを修正することはできません
。事実上、この脆弱性を持つデバイスはその寿命が尽きるまで脆弱なままとなります。唯一の実効的な対策は、A14以降の新しいチップを搭載したデバイスに移行することです
。
ただし、本脆弱性の悪用には現実的な制約があります。攻撃者はデバイスをDevice Firmware Update(DFU)モードにした上で、物理的にUSBケーブルで接続する必要があります。そのため、遠隔からの不正アクセスには利用できません。また、ExploitはデバイスのSecure Enclave(セキュリティチップ)を直接侵害するものではありませんが、そのセキュリティを低下させる可能性があります
。
Comments
0 comments