Appleシリコン搭載Macの起動ディスクのセキュリティポリシー管理
概要
Intelプロセッサ搭載Macのセキュリティポリシーとは異なり、Appleシリコン搭載Macのセキュリティポリシーは、インストールされているオペレーティングシステムごとに適用されます。これは、バージョンとセキュリティポリシーが異なる複数のインストール済みmacOSインスタンスが同じMacでサポートされることを意味します。この理由から、起動セキュリティユーティリティにオペレーティングシステムピッカーが追加されました。
Appleシリコン搭載Macでは、システムセキュリティユーティリティが、kextのブートやシステム整合性保護(SIP)の構成など、ユーザが構成したmacOSの全体的なセキュリティ状態を示します。セキュリティ設定の変更によりセキュリティが大幅に低下したりシステム侵害が生じやすくなったりする場合、変更を行うためには、ユーザが電源ボタンを押したままにしてrecoveryOSに入る必要があります(マルウェアは信号をトリガできず、物理的にアクセスできる人間のみがトリガできます)。このため、Appleシリコン搭載Macもファームウェアパスワードを必要としません(またはサポートしません)。すべての重要な変更は、ユーザ承認によってすでに制御されています。SIPについて詳しくは、システム整合性保護を参照してください。
「完全なセキュリティ」と「低セキュリティ」は、recoveryOSから起動セキュリティユーティリティを使用して設定できます。ただし、「セキュリティ制限なし」には、Macの安全性が大幅に低下するリスクを受け入れるユーザが、コマンドラインツールからのみアクセスできます。
「完全なセキュリティ」のポリシー
「完全なセキュリティ」はデフォルトの設定であり、iOSおよびiPadOSと同様に動作します。macOSでは、ソフトウェアがダウンロードされ、インストールの準備が完了した時点で、ソフトウェアに付属するグローバル署名を使用するのではなく、iOSおよびiPadOSで使用されるものと同じAppleの署名サーバと通信して、新しい「パーソナライズされた」署名を要求します。署名は、署名リクエストの一部としてECID(Exclusive Chip Identification)(この場合はApple CPUごとに固有のID)が含まれているときにパーソナライズされます。署名サーバから送り返される署名は一意になり、署名を要求したApple CPUのみで使用できます。「完全なセキュリティ」のポリシーが有効な場合、提供された署名がAppleによるものということだけでなく、そのMacのみのために署名されていて、実質的にそのバージョンのmacOSをそのMacに関連付けるものであることがBoot ROMとLLBによって保証されます。
オンラインの署名サーバを利用すると、一般的なグローバル署名方式に比べ、ロールバック攻撃からの保護も強化されます。グローバル署名システムでは、セキュリティエポックが何回もロールされている可能性がありますが、最新のファームウェアが実装されたことがないシステムではそのことが認識されません。例えば、現在自らのセキュリティエポックが1であると認識しているコンピュータは、現在の実際のセキュリティエポックが5であっても、セキュリティエポック2のソフトウェアを受け入れてしまいます。Appleシリコンのオンライン署名システムでは、セキュリティエポックが最新でないソフトウェア用の署名の作成を署名サーバが拒否できます。
また、攻撃者がセキュリティエポックの変化後に脆弱性を発見しても、以前のエポックに属する脆弱なソフトウェアをシステムAから選んで、攻撃のためにシステムBに適用することはできません。エポックの古い脆弱なソフトウェアがシステムA用にパーソナライズされていたことにより、その脆弱なソフトウェアを転送できないため、それがシステムBの攻撃に使用されることはありません。これらすべてのメカニズムが連携するため、最新のソフトウェアによる保護を回避するために攻撃者がMacに脆弱なソフトウェアを意図的に配置することが不可能であることがより強固に保証されます。ただし、Macの管理者ユーザ名とパスワードを所有しているユーザは、自らのユースケースに最適なセキュリティポリシーをいつでも選択できます。
「低セキュリティ」のポリシー
「低セキュリティ」は、T2チップとIntelプロセッサを搭載したMacでの「中程度のセキュリティ」の動作に似ていて、ベンダー(この場合は、Apple)はコードが自身によって提供されたものであることを保証するために、コードのデジタル署名を生成します。この設計により、攻撃者が無署名のコードを挿入することを阻止できます。Appleではこの署名を「グローバル」署名と呼びます。この署名は現在「低セキュリティ」のポリシーが設定されているMacで任意の期間使用できるからです。不正なオペレーティングシステムの変更によりユーザデータにアクセスできなくなる可能性がありますが、「低セキュリティ」自体はロールバック攻撃に対する保護を提供しません。詳しくは、Appleシリコン搭載Macのカーネル拡張機能を参照してください。
「低セキュリティ」は、ユーザが古いバージョンのmacOSを実行できるようにするだけでなく、他社製のカーネル拡張機能(kext)の導入など、ユーザのシステムセキュリティを危険にさらす可能性のあるその他のアクションにも必要です。kextはカーネルと同じ権限を持っているため、他社製のkextに脆弱性があると、オペレーティングシステム全体が侵害される可能性があります。このような理由で、デベロッパには、将来のAppleシリコン搭載MacコンピュータのmacOSからkextサポートが削除される前に、システム機能拡張を採用することが強く推奨されています。他社製のkextは、有効になっている場合でも、カーネル内にオンデマンドで読み込むことはできません。その代わりに、それらのkextは、LocalPolicyにハッシュが保存されているAuxiliary Kernel Collection(AuxKC)に結合され、その結果として再起動が要求されます。AuxKCの生成について詳しくは、macOSのカーネルの安全な拡張を参照してください。
「セキュリティ制限なし」のポリシー
「セキュリティ制限なし」は、Macをはるかに安全でない状態にするリスクを受け入れるユーザ向けです。このモードは、T2チップとIntelプロセッサを搭載したMacの「セキュリティなし」モードとは異なります。「セキュリティ制限なし」では、署名の検証は引き続きセキュアブートチェーン全体で実行されますが、ポリシーを「制限なし」に設定すると、カスタムXNUカーネルから構築されたユーザ生成ブートカーネルコレクションのような、Secure Enclaveで署名されたブートオブジェクトをローカルで受け入れるべきであることがiBootに伝達されます。この方法により、「セキュリティ制限なし」でも、任意の「完全に信頼されていないオペレーティングシステム」カーネルを実行するためのアーキテクチャ機能が備わります。カスタムのブートカーネルコレクションまたは完全には信頼されていないオペレーティングシステムがシステムに読み込まれると、一部の復号鍵が使用できなくなります。これは、完全には信頼されていないオペレーティングシステムが信頼できるオペレーティングシステムのデータにアクセスできないようにするためです。
重要: AppleはカスタムXNUカーネルを提供またはサポートしていません。
「セキュリティ制限なし」がT2チップとIntelプロセッサを搭載したMacの「セキュリティなし」とは異なる点がもう1つあります。これは、過去に独立して制御可能であった一部のセキュリティダウングレードの前提条件です。特に、Appleシリコン搭載Macでシステム整合性保護(SIP)を無効にするには、ユーザはシステムを「セキュリティ制限なし」に設定していることを確認する必要があります。SIPを無効にすると常に、カーネルがはるかに容易に侵害されるような状態にシステムが置かれるためです。特に、Appleシリコン搭載MacでSIPを無効にすると、AuxKCの生成時にkext署名の適用が無効になり、任意のkextをカーネルメモリに読み込むことが許可されます。Appleシリコン搭載Macで行われたSIPのもう1つの改善点は、ポリシーストアがNVRAMからLocalPolicyに移動されたことです。そのため、SIPを無効にするには、電源ボタンを押したままにしてアクセスしたrecoveryOSから、LocalPolicy署名鍵にアクセスできるユーザによる認証が必要です。これにより、ソフトウェアのみの攻撃者だけでなく、Macに物理的にアクセスできる攻撃者にとっても、SIP無効化の難易度が大幅に高まります。
起動セキュリティユーティリティアプリから「セキュリティ制限なし」にダウングレードすることはできません。ユーザは、csrutil
(SIPを無効にする)など、recoveryOSのターミナルからコマンドラインツールを実行することによってのみダウングレードできます。ユーザがダウングレードしたあと、それが発生したという事実が起動セキュリティユーティリティに反映されるため、ユーザはセキュリティをより安全なモードに簡単に設定できます。
注記: 技術的にはすべてのブートがローカルで実行されるため、Appleシリコン搭載Macは特定のメディアのブートポリシーを必要とせず、サポートしません。ユーザが外部メディアからのブートを選択する場合は、recoveryOSからの認証済み再起動を用いて、まずそのオペレーティングシステムバージョンをパーソナライズする必要があります。この再起動によって、外部メディアに保存されたオペレーティングシステムから信頼できるブートを実行するために使用される、LocalPolicyファイルが内部ドライブに作成されます。これは、外部メディアからの起動の設定は常に、オペレーティングシステムごとに明示的に有効にされ、すでにユーザの承認が要求されているという意味で、追加のセキュリティ設定は必要ありません。