ユーザー アカウント制御: 安全な場所にインストールされている UIAccess アプリケーションの昇格のみ

[ユーザー アカウント制御: 安全な場所にインストールされている UIAccess アプリケーションの昇格のみ] セキュリティ ポリシー設定のベスト プラクティス、場所、値、ポリシー管理、およびセキュリティに関する考慮事項について説明します。

リファレンス

このポリシー設定は、UIAccess 整合性レベルでの実行を必要とする (アプリ マニフェストで UIAccess=true とマークされている) アプリはファイル システム上の安全な場所に存在しなければならないという要件を強制します。比較的安全な場所は、次のディレクトリに限定されます。

  • \Program Files\ とそのサブディレクトリ

  • \Windows\system32\

  • \Program Files (x86)\ とそのサブディレクトリ (64 ビット版 Windows の場合)

  

UIAccess 整合性レベルでの実行を要求するすべての対話型アプリケーションでは、このセキュリティ設定の状態にかかわらず、PKI 署名の確認が Windows によって実行されます。

 

背景

Windows サブシステムには、ユーザー インターフェイス特権の分離 (UIPI) により、低い特権のアプリケーションから高い特権のアプリケーションへのメッセージの送信やフックのインストールを防止する制限が実装されています。高い特権のアプリケーションは、低い特権のプロセスにメッセージを送信することが許可されます。特権レベル (または整合性レベル) が同じアプリケーション間では、UIPI によってメッセージの動作が干渉を受けたり変更されたりすることはありません。

Microsoft UI オートメーションは、Windows オペレーティング システムでアクセシビリティ要件をサポートする最新のモデルです。アクセシビリティに対応したユーザー エクスペリエンスをサポートするように設計されたアプリケーションが、ユーザーに代わって他の Windows アプリケーションの動作を制御します。オートメーション クライアント コンピューターとサーバー上のすべてのアプリケーションが標準ユーザーとして (つまり、中レベルの整合性レベルで) 実行されている場合、Microsoft UI オートメーション モデルは UIPI の制限の影響を受けません。

ただし、管理者承認モードを使って、管理ユーザーが UAC に基づいて昇格された特権でアプリケーションを実行する場合があります。Microsoft UI オートメーションでは、UIPI が実装する制限をバイパスする手段がない限り、デスクトップ上の昇格されたアプリケーションの UI グラフィックスを操作することができません。UIAccess を使うと、UI オートメーション プログラムで特権レベルを超えて UIPI の制限をバイパスできるようになります。

アプリケーションが特権の要求時に UIAccess 属性を指定した場合、そのアプリケーションは、特権レベルをまたいでメッセージを送信するために UIPI の制限をバイパスする必要があることを示しています。デバイスは、UIAccess 特権を持つアプリケーションを起動する前に、次のポリシー チェックを実装します。

  1. アプリケーションには、ローカル デバイスの "信頼されたルート証明機関" ストアに関連付けられているデジタル証明書を使って検証できるデジタル署名が必要です。

  2. アプリケーションは、Program Files ディレクトリなど、管理者だけが書き込めるローカル フォルダーにインストールする必要があります。UI オートメーション アプリケーションに許可されているディレクトリは次のとおりです。

    1. %ProgramFiles% とそのサブディレクトリ。

    2. %WinDir% とそのサブディレクトリ。ただし、標準ユーザーが書き込みアクセス権を持つ一部のサブディレクトリを除きます。

設定可能な値

  • 有効

    アプリケーションは、ファイル システム上の安全な場所に存在する場合にのみ UIAccess 整合性で起動できます。

  • 無効

    アプリケーションは、ファイル システム上の安全な場所に存在していない場合でも UIAccess 整合性で起動できます。

ベスト プラクティス

  • このポリシーを [有効] に設定して、指定された安全なディレクトリにあるアプリケーションを UIAccess 整合性で実行することを許可します。

場所

コンピューターの構成\Windows の設定\セキュリティの設定\ローカル ポリシー\セキュリティ オプション

既定値

次の表に、このポリシーの実際の値と有効な既定値を示します。既定値は、ポリシーのプロパティ ページにも表示されます。

サーバーの種類または GPO 既定値

既定のドメイン ポリシー

未定義

既定のドメイン コントローラー ポリシー

未定義

スタンドアロン サーバーの既定の設定

有効

DC の有効な既定の設定

有効

メンバー サーバーの有効な既定の設定

有効

クライアント コンピューターの有効な既定の設定

有効

 

ポリシー管理

このセクションでは、このポリシーの管理に役立つ機能やツールについて説明します。

再起動の必要性

なし。このポリシーに対する変更がローカルに保存された場合、またはグループ ポリシーを通じて配布された場合、その変更はデバイスを再起動しなくても有効になります。

グループ ポリシー

すべての監査機能がグループ ポリシーに統合されています。管理者は、ドメイン、サイト、または組織単位 (OU) のグループ ポリシー管理コンソール (GPMC) またはローカル セキュリティ ポリシー スナップインにこれらの設定を構成、展開、および管理できます。

セキュリティに関する考慮事項

このセクションでは、機能やその構成が攻撃者によってどのように悪用される可能性があるかと、対策を実装する方法、対策の実装に伴う可能性のある悪影響について説明します。

脆弱性

UIAccess 整合性は、アプリケーションの特権が標準ユーザーから管理者に昇格された場合に、アプリケーションがユーザー インターフェイス特権の分離 (UIPI) の制限をバイパスできるようにするものです。この設定を有効にすると、マニフェストで UIAccess フラグが true に設定されているアプリケーションは、ログオン プロンプトや特権の昇格時のプロンプトなど、高い特権レベルで動作するアプリケーションと情報を交換できるようになります。この機能は、スクリーン リーダーのように、ユーザー インターフェイスを別の形式に変換するアクセシビリティ機能をサポートする場合に必要となりますが、ほとんどのアプリケーションでは必要ありません。UIAccess 権限で開始されたプロセスは、次のような操作を実行できます。

  • フォアグラウンド ウィンドウを設定する。

  • SendInput 関数を使って、任意のアプリケーション ウィンドウを操作する。

  • 低レベル フック、未加工入力、GetKeyState、GetAsyncKeyState、GetKeyboardInput を使って、あらゆる整合性レベルの入力を読み取る。

  • ジャーナル フックを設定する。

  • AttachThreadInput を使って、上位の整合性入力キューにスレッドをアタッチする。

対策

[ユーザー アカウント制御: 安全な場所にインストールされている UIAccess アプリケーションの昇格のみ] 設定を有効にします。

潜在的な影響

Windows Vista 以降のオペレーティング システムを実行しているコンピューターでは、UIAccess を要求したアプリケーションが UIAccess の設定要件を満たしている場合、そのアプリケーションはほとんどの UIPI の制限をバイパスできる権限付きで起動されます。アプリケーションがセキュリティ制限を満たしていない場合、そのアプリケーションは UIAccess 権限なしで起動され、同等以下の特権レベルを持つアプリケーションとしか対話できません。

関連トピック

セキュリティ オプション