Appleプラットフォームのセキュリティ

macOSのオプションROMのセキュリティ
注記: オプションROMは、現在のところAppleシリコン搭載Macではサポートされていません。
Apple T2セキュリティチップを搭載したMacのオプションROMのセキュリティ
ThunderboltデバイスとPCIeデバイスでは、「オプションROM(OROM)」をデバイスに物理的に接続できます(通常これは真の意味でのROMではなく、ファームウェアが格納される書き換え可能なチップです)。UEFIベースのシステムでは、そのファームウェアは一般にUEFIドライバであり、UEFIファームウェアによって読み込まれ、実行されます。実行されるコードは、そのコードの呼び出し元であるハードウェアを初期化および構成して、残りのファームウェアでそのハードウェアを使用できるようにするためのものです。この機能は、外部RAIDアレイから起動するときなど、ごく初期の起動フェーズで専用の他社製ハードウェアでの読み込みと動作を可能にするために必要です。
ただし、OROMは一般に書き換え可能なため、攻撃者が正当なペリフェラルのOROMを上書きすれば、攻撃者のコードがブートプロセスで早期に実行され、実行環境を改ざんして、あとで読み込まれるソフトウェアの整合性を侵害することができます。同様に、攻撃者が自分の悪質なデバイスをシステムに導入すると、悪質なコードも実行できるようになります。
macOS 10.12.3では、2011年よりあとに販売されたMacコンピュータの動作が変更され、特殊な組み合わせのキーを押さない限り、デフォルトでMacの起動時にOROMが実行されなくなりました。このキーの組み合わせで、不注意によりmacOSのブートシーケンスに悪質なOROMが導入されないように保護されました。ファームウェアパスワードユーティリティのデフォルトの動作も変更され、ユーザがファームウェアパスワードを設定すると、特定のキーの組み合わせを押した場合でもOROMを実行できなくなりました。これにより、Macに物理的にアクセスできる攻撃者によって悪質なOROMが意図的に導入されることを阻止できるようになりました。ファームウェアパスワードを設定していてもOROMを実行する必要があるユーザ向けに、macOSのfirmwarepasswd
コマンドラインツールを使用してデフォルト以外のオプションも構成できます。
OROMサンドボックスのセキュリティ
macOS 10.15では、OROMのサンドボックス化と特権分離のメカニズムを含むように、UEFIファームウェアがアップデートされました。UEFIファームウェアは通常、OROMを含むすべてのコードを、Ring 0と呼ばれる最大CPU特権レベルで実行し、すべてのコードおよびデータ用の単一共有仮想メモリ領域を使用します。Ring 0はmacOSカーネルが実行される権限レベルです。アプリが実行されるのは、それより低い権限レベルのRing 3です。OROMサンドボックスによって、カーネルと同様の仮想メモリ隔離を利用してOROMが特権分離され、OROMがRing 3で実行されるようになりました。

さらに、OROMが呼び出せるインターフェイスが(カーネルでのシステムコールへのフィルタ適用と同様に)制限され、OROMが自らを登録できるデバイスのタイプも(アプリの承認と同様に)制限されています。この設計の利点は、悪質なOROMがRing 0メモリ内にあるどの場所にも直接書き込めなくなることです。代わりに、明確に定義された非常に狭いサンドボックスインターフェイスに限定されます。このインターフェイスの制限によって攻撃対象領域が大幅に縮小され、攻撃者は最初にサンドボックスを回避して特権を昇格せざるを得なくなります。