Share via


Windows 整合性メカニズムとは

Windows 整合性メカニズムは、同じユーザー アカウントで実行され、信頼性の低いアプリケーションのアクセス許可を制限する、Windows セキュリティ アーキテクチャのコア コンポーネントです。

Windows Vista の®整合性メカニズムは、アプリケーション プロセスとセキュリティ保護可能なオブジェクトに整合性レベルを割り当てることで、オペレーティング システムのセキュリティ アーキテクチャを拡張します。

整合性レベルは、アプリケーションによって作成されたファイルなど、アプリケーション プロセスとオブジェクトを実行する際の信頼性を表したものです。 整合性メカニズムは、ファイル システムなどのリソース マネージャーが、より高い整合性のオブジェクトの読み取りまたは変更から、より低い整合性または信頼性の低いプロセスをブロックする定義済みのポリシーを使用する機能を提供します。 整合性メカニズムを使用すると、Windows セキュリティ モデルは、アクセス制御リスト (ACL) でユーザーまたはグループのアクセス許可を付与することによって定義できない新しいアクセス制御制限を適用できます。

Windows セキュリティ アーキテクチャは、主に、セキュリティ識別子 (SID) によって内部的に表されるユーザーまたはグループにアクセス権 (読み取り、書き込み、実行のアクセス許可) と特権を付与することに基づいています。 ユーザーが Windows にログオンすると、セキュリティ サブシステムによって、ユーザーの SID とグループ メンバーシップ SID がセキュリティ アクセス トークンに設定されます。 セキュリティ アクセス トークンは、そのユーザーによって実行されるすべてのアプリケーション プロセスに割り当てられます。 アプリケーション プロセスがファイルやレジストリ キーなどのオブジェクトを開くたびに、オブジェクトを管理するリソース マネージャーがセキュリティ サブシステムでを呼び出して、アクセスの決定を行います。 アクセス チェックによって、このユーザーに対して許可されるアクセス許可が決定されます。 セキュリティ サブシステム (セキュリティ参照モニターとも呼ばれます) は、アクセス トークン内のユーザー SID とグループ SID を、オブジェクトに関連付けられているセキュリティ記述子のアクセス権と比較します。 ユーザー SID にオブジェクトの ACL のフル アクセス権が付与されている場合、ユーザーが実行するアプリケーション プロセスはオブジェクトへのフル アクセス権を持ちます。 Windows セキュリティ アーキテクチャの詳細については、「 Windows 整合性メカニズム リソース」を参照してください。

Windows セキュリティ アーキテクチャの拡張

Windows 整合性メカニズムは、オブジェクトのセキュリティ記述子の整合性レベルを表す新しいアクセス制御エントリ (ACE) 型を定義することで、セキュリティ アーキテクチャを拡張します。 新しい ACE は、オブジェクトの整合性レベルを表します。 アクセス トークンが初期化されると、整合性レベルもセキュリティ アクセス トークンに割り当てられます。 アクセス トークンの整合性レベルは、サブジェクトの整合性レベルを表します。 アクセス トークンの整合性レベルは、セキュリティ参照モニターがアクセス チェックを実行するときに、セキュリティ記述子の整合性レベルと比較されます。 Windows Vista では 、AccessCheck 関数を使用して、セキュリティ保護可能なオブジェクトに対して許可されるアクセス権を決定します。 Windows では、サブジェクトの整合性レベルがオブジェクトより高いか低いか、および新しいアクセス制御 ACE の整合性ポリシー フラグに応じて、許可されるアクセス権が制限されます。 セキュリティ サブシステムは、ACL によって提供されるユーザー制御下の随意アクセスと区別するために、整合性レベルを必須ラベルとして実装します。

Windows 整合性メカニズムの設計目標

Windows 整合性メカニズムを使用すると、Windows Vista で多くの重要なシナリオが可能になります。 要件に対処するために、Windows 整合性メカニズムの設計は次の目標を満たす必要がありました。

  • アクセス トークンの作成時にすべてのセキュリティ アクセス トークンに整合性レベルを自動的に割り当てて、すべてのプロセスとスレッドがアクセス制御に有効な整合性レベルを持つようにする必要があります。
  • セキュリティ サブシステムは、特定のオブジェクトの種類に必須ラベルを自動的に割り当てます。
  • 基本的なアーキテクチャの理解と使用をシンプルにするために、システムはできるだけ少ない整合性レベルを使用する必要があります。
  • 整合性ポリシーは、さまざまなオブジェクト リソース マネージャーのアクセス要件を満たし、将来の機能拡張を可能にするために柔軟である必要があります。
  • 整合性メカニズムは、Windows セキュリティに依存するシステムコードとアプリケーション コードの大規模なレガシへの影響を最小限に抑えるために、既存のセキュリティ アーキテクチャと統合する必要があります。
  • 管理者またはユーザーが、適用メカニズムが正しく機能するように整合性レベルを構成する必要はありません。

Windows の整合性メカニズムは、オブジェクトに整合性レベルを割り当てるための新しい必須ラベル ACE 型を定義することで、これらの目標を達成します。 この構造の詳細については、このペーパーの後のセクションで説明します。 ただし、必須ラベル ACE は、既存のセキュリティ記述子データ構造定義や一般的に使用される随意アクセス制御リストに変更を加えることなく、オブジェクトの整合性レベルを定義します。

Windows の整合性メカニズムは、オペレーティング システムがユーザー制御下の随意アクセスと区別するために割り当てる必須ラベルに基づいています。 随意アクセス制御を使用すると、オブジェクトの所有者、またはアクセス許可が付与されているグループは、オブジェクトのアクセス許可を変更できます。 Windows には、高度なユーザーがファイルやレジストリ キーなどのオブジェクトのセキュリティ アクセス許可 (随意 ACL で表される) を表示および変更するためのグラフィカル ユーザー インターフェイス (UI) が用意されています。 必須ラベルは常に特定のオブジェクトに割り当てられ、オブジェクト作成者がオブジェクトの作成時にラベルを設定または初期化する方法に関するコントロールがあります。 Windows Vista では、整合性ラベルを管理するためのグラフィカル UI は実装されていません。ラベル管理は、比較的少数の領域で使用または必要になるためです。

Windows の整合性メカニズムがあるのはなぜですか?

Windows 整合性メカニズムの目的は、同じユーザー アカウントで実行されていて、信頼性が低いアプリケーションのアクセス許可を制限することです。 インターネットからダウンロードされた悪意のある可能性のある不明なコードは、システム状態の変更、ユーザー データ ファイルの変更、または他のアプリケーション プログラムの動作の操作を防止する必要があります。 Windows セキュリティ サブシステムは、同じユーザーに対して異なる特権レベルで実行されているコードに、整合性レベルの単純な階層を割り当てます。 以前のバージョンの Windows では、アプリケーション プロセスのセキュリティ アクセス トークン特権を調整できますが、このような調整は一般的ではありません。 Windows Vista より前のほとんどのアプリケーションは、完全な管理者権限を持つ管理アカウントを使用して実行されました。 Windows Vista には、標準ユーザー アカウントの広範な使用を可能にすることで、最小限の特権の概念が組み込まれています。 管理者アカウントの管理承認モードのユーザー アカウント制御 (UAC) は、同じデスクトップ上の複数のアプリケーションが異なる特権レベルで実行されていることを意味します。 たとえば、保護モードのインターネット エクスプローラーでは、整合性メカニズムを使用して、アクセス許可が制限されたプロセスで Web ブラウザーを実行します。

Windows の整合性メカニズムが対処する主なセキュリティの問題は、ユーザー データを不正に改ざんすること、および間接的にシステム状態を使用することです。 整合性メカニズムが役立つ二次的な問題は、情報漏えいです。 ただし、情報漏えいは、プロセス アドレス空間へのアクセスに関してのみ防止されます。 情報共有は Windows アプリケーション間で非常に一般的であり、アプリケーション間の便利な情報共有はユーザー エクスペリエンスの基礎となります。 1 つの例として、コピーと貼り付けがあります。 同じユーザー アカウントで実行されているアプリケーション間の情報共有に関する厳格なセキュリティ境界は、アプリケーションの互換性とユーザー エクスペリエンスに重大な影響を与える可能性があります。

信頼できないコードは、さまざまな方法でユーザー データの変更を試みることができます。 一部の攻撃では、ファイルを作成、変更、または削除することで、データを直接操作しようとする場合があります。 他の攻撃は、必要なレベルのアクセス権を持つ別のアプリケーションで実行する任意のコードを取得することを目的として、より高い特権で実行されている別のプロセスを対象とします。 クロスプロセス攻撃にはさまざまな種類があります。 アプリケーションの設計と実装の範囲が広いため、整合性メカニズムは完全な分離バリアを提供できません。 Windows の整合性メカニズムは、アプリケーション サンドボックスとして意図されていません。 ただし、アプリケーション開発者が、信頼性の低いアプリケーションの動作を制限するために使用するセキュリティ ツールの 1 つになる場合があります。

Windows Vista の整合性メカニズムと以前の整合性モデル

Windows の整合性メカニズムの一部の特性は、コンピューターのセキュリティに関する以前の整合性モデルに似ています。 ただし、Windows 整合性メカニズムは、主に、高度に連携する Windows アプリケーション環境での権限の改ざんまたは昇格に対処するように設計されています。 以前の整合性モデルは、信頼できないデータの読み取りを妨げるポリシーを適用することで、信頼できるプロセスの整合性を維持することにより関心がありました。

Biba セキュリティ モデルは、整合性ラベルの階層と、サブジェクト整合性レベルがオブジェクトの整合性レベルを支配する場合に許可されるアクセス ポリシーに基づいています。 Windows 整合性メカニズムは、次の方法で Biba モデルに似ています。

  • 整合性ラベルの階層を使用します (整合性ラベルは、Bell-LePadula モデルのセキュリティ ラベルと同じではありません)。
  • システムでは、一連の順序付けられたサブジェクト、オブジェクト、および整合性レベルが使用されます。
  • サブジェクトの整合性レベルが、オブジェクトの整合性レベルを支配 (以上) します。
  • 整合性ポリシーはオブジェクトへのアクセスを禁止しますが、主に情報のフローを制限するために使用されません。
  • 情報漏えいの防止は、Windows Vista の整合性メカニズムの目的ではありません。

Windows の整合性レベルは、値が小さいほど信頼性が低いことを示し、値が大きいほど信頼性が高いことを示すように並べ替えられます。 下位レベルのサブジェクトは、上位レベルのオブジェクトを変更できません。 サブジェクトの整合性レベルは動的ではありません。 たとえば、プロセスが整合性の低いオブジェクトからデータを読み取る場合、サブジェクトの整合性レベルは低い値に変更されません。 Biba の厳密な整合性モデルでは、整合性の高いプロセスで整合性の低いデータを読み取ることを許可しません。 これは、"読み取りなし" 整合性ポリシーと呼ばれることもあります。 以下で詳しく説明する Windows 整合性ポリシーでは、整合性の高いサブジェクトが低整合性オブジェクトの読み取りや実行を禁止したり防止したりすることはありません。 不正な形式の信頼されていない入力データを読み取る場合、アプリケーションの脆弱性が悪用され、任意のコードが実行される攻撃の例は多数あります。 Windows の整合性メカニズムでは、どのレベルでもデータの読み取りが禁止されたり防止されたりすることはありません。 Windows では、Biba モデルで説明されている厳密な整合性ポリシーは適用されません。 整合性の設計では、不明なソースまたは信頼されていないソースからの信頼されていないデータを処理するように設計されたプロセスが、より低い整合性レベルで実行されているか、信頼されていないデータが使用前に検証されていることを前提としています。 ただし、Windows の整合性メカニズムでは、その制約は適用されません。

Windows の整合性メカニズムでは、動的な "Low-Water-Mark" ポリシーは実装されません。 動的ポリシーは、サブジェクトが低整合性オブジェクトを開くと、サブジェクトの整合性レベルを変更します。 動的整合性の問題は、高整合性プロセスが高い整合性に基づいて多くのオブジェクトに対して開いているハンドルを取得し、特定の低整合性ファイルを開いた後に突然、整合性の低いサブジェクトになる場合です。 整合性レベルの変更がアプリケーションの動作に大きな影響を与えたときに、開いているすべてのハンドルを高い整合性オブジェクトに強制的に閉じます。 動的な整合性の低いプロセス自体は、整合性レベルが低い他のプロセスのターゲット オブジェクトになります。 このようなプロセスでは、整合性の高いオブジェクトに対して開いているハンドルを持つアプリケーションの動作を (同じ下位レベルで) 変更できるようになりました。

Windows 整合性メカニズムは、Clark-Wilson モデルで説明されているように、軍事または商用の要件をサポートするためにデータの整合性保護用に設計されていません。 整合性コントロールの Windows 実装は、制約付きデータ項目または制約なしデータ項目と認定変換手順の概念に基づいて構築されていません。 ただし、これらの概念は、信頼されていないソースからより高い整合性プロセスへの情報フローを考慮する場合に、アプリケーション デザイナーに役立ちます。

Windows の整合性メカニズムは、コンピューター セキュリティの以前の整合性モデルに似ていますが、Windows Vista ではモデルの実装は試みられません。 代わりに、Windows 整合性メカニズムによって、さまざまな特権レベルまたは信頼レベルで実行されているプロセスで使用できるアクセス許可が制限されます。 Biba および Clark-Wilson および動的整合性ポリシーによる整合性モデルに関する以前の作業の詳細については、「 Windows 整合性メカニズム リソース」を参照してください。