セキュアブートは、ブートプロセス中に信頼できるソフトウェアのみが実行されるように設計された重要なセキュリティ機能です。しかし、脆弱性が出現するにつれて、次のようなより高度なメカニズムが求められています。 セキュア ブート アドバンスト ターゲティング (SBAT) セキュリティを強化するために導入されました。この記事では、SBAT の背後にある主要な概念と、ブート プロセスの整合性を維持するために SBAT がどのように機能するかについて説明します。
従来のセキュアブートの仕組み #
セキュア ブートは、ブート プロセスの各コンポーネントを検証することで機能します。まず、ファームウェアがブートローダーを検証し、次にカーネルを検証します。この信頼チェーンにより、検証され署名されたコンポーネントのみが実行を許可されます。脆弱性が見つかった場合、システムは信頼できないコンポーネントのハッシュをブラックリストに追加して、そのコンポーネントを無効にします。この方法は効果的ですが、現代のブート環境の規模と複雑さを処理するには課題があります。
大まかに言えば、セキュア ブート プロセスは信頼チェーン モデルに従います。
1. UEFIファームウェア: ブートローダーの署名を検証します。
2. ブートローダー: カーネル署名を検証します。
3. カーネル: 動的にロードされたモジュールと追加のカーネル コードを検証します。
4. 実行時環境: 信頼が継承され、システムの実行環境が保護されます。
このモデルでは、信頼できるキーで署名されたコンポーネントのみが実行されることが保証されます。ただし、これらのコンポーネント (ブートローダーなど) のいずれかに脆弱性が発見された場合、従来のセキュア ブート実装では、コンポーネントのハッシュをブラックリストに追加する必要があります。これにより、そのバイナリが今後実行されなくなります。問題は? 規模.
問題: 大量のバイナリの管理 #
たとえば、各 Linux ディストリビューションは、独自のバージョンのブートローダ (GRUB など) をコンパイルし、一意のハッシュを持つ多数の異なるバイナリを作成します。基盤となるブートローダ コードで脆弱性が特定された場合、影響を受けるすべてのバイナリを個別に取り消す必要があります。取り消しハッシュに使用できるストレージ (通常は NVRAM に保存) が限られているため、このアプローチは大規模な環境では持続可能ではありません。
SBAT: セキュアブートのスケーラビリティの強化 #
Secure Boot Advanced Targeting (SBAT) は、個々のバイナリ ハッシュを取り消すのではなく、セキュリティ生成を導入することで、このスケーラビリティの問題を解決するように設計されています。SBAT メカニズムは次のように機能します。
1. セキュリティ世代番号: 各ブート コンポーネント (ブートローダ、カーネルなど) には世代番号が割り当てられます。この番号は、ビルド プロセス中に署名されたバイナリに埋め込まれます。
2. SBAT変数各コンポーネントに許可される最小のセキュリティ生成を保存するための新しいファームウェア変数が導入されました。
3. 検証ロジック: ブート プロセス中に、システムは次のコンポーネントのセキュリティ世代番号を SBAT 変数で定義された最小世代と比較します。コンポーネントの世代がしきい値を下回る場合、コンポーネントは拒否され、ブート プロセスは停止します。
SBATフロー #
- ファームウェアはブートローダを起動し、SBAT セキュリティ生成をチェックします。
- ブートローダーはカーネルの世代番号を検証します。
- カーネルは必要に応じて他のモジュールのセキュリティ生成番号を検証する場合があります。
このアプローチにより、個々のハッシュを保存する必要なく、SBAT 変数の最小世代番号を上げるだけで、脆弱なバイナリの複数のバージョンを取り消すことができます。
SBAT の実装: 主要コンポーネント #
署名付きバイナリの SBAT セクション #
ブート チェーン内のすべてのコンポーネントには、次の内容を含む SBAT メタデータ セクションが含まれている必要があります。
- コンポーネントの名前。
- コンポーネントの現在のセキュリティ生成番号。
ファームウェアの統合 #
SBAT 変数を認識して処理するには、システム ファームウェアを更新する必要があります。これには次のものが含まれます。
- SBAT 変数を NVRAM に保存します。
- ブート コンポーネント内の SBAT メタデータをチェックしています。
- 世代番号が古いコンポーネントを拒否します。
セキュリティポリシー管理 #
SBAT 変数の更新は、システムの全体的なセキュリティ ポリシー管理の一部です。継続的な保護を確保するには、更新を行うたびに、ブート チェーン内のすべての関連コンポーネントの世代番号を増やす必要があります。
SBAT とセキュアブートの強化 #
SBAT を導入することで、組織は次のことが可能になります。
1. 失効オーバーヘッドを削減: 脆弱なバイナリのハッシュを多数保存する代わりに、世代番号のみを更新する必要があります。
2. セキュリティを強化する: 脆弱なコンポーネントをより効率的にブロックできるため、ファームウェア ストレージを使い果たすことなくリスクを軽減できます。
3. より簡単なロールアウトシステム管理者はファームウェアの更新とセキュア ブート構成をより簡単に管理できるため、脆弱性への対応時間が短縮されます。
結論 #
SBAT (Secure Boot Advanced Targeting) は、システムのストレージやセキュリティ インフラストラクチャに負担をかけずに、セキュア ブート チェーンのセキュリティ更新を処理するための効果的な方法です。各ブート コンポーネントに世代番号を埋め込み、単一の更新メカニズムを使用してそれらの世代を適用することで、SBAT は、進化し続けるブート セキュリティの状況を管理するためのスケーラビリティと柔軟性を提供します。
最新の Linux および Windows システムでは、SBAT により、最小限の運用オーバーヘッドで脅威に迅速に対応できる、より強力で回復力の高いセキュア ブート環境が確保されます。