WPF のセキュリティ方針 - プラットフォーム セキュリティWPF Security Strategy - Platform Security

Windows Presentation Foundation (WPF) にはさまざまなセキュリティサービスが用意されていますが、オペレーティングシステム、CLR、Internet Explorer など、基になるプラットフォームのセキュリティ機能も活用されています。While Windows Presentation Foundation (WPF) provides a variety of security services, it also leverages the security features of the underlying platform, which includes the operating system, the CLR, and Internet Explorer. これらの層を組み合わせることで、WPFWPF に強力な多重防御のセキュリティ モデルが提供されます。このセキュリティ モデルでは、次の図に示すように、単一障害点の回避を試みます。These layers combine to provide WPFWPF a strong, defense-in-depth security model that attempts to avoid any single point of failure, as shown in the following figure:

WPF のセキュリティモデルを示す図。

このトピックの残りの部分では、WPFWPF に関連するこれらの各層の機能について具体的に説明します。The remainder of this topic discusses the features in each of these layers that pertain to WPFWPF specifically.

オペレーティング システムのセキュリティOperating System Security

WPFWPF が必要とするオペレーティング システムの最小レベルは Windows XP SP2Windows XP SP2 です。The minimum level of operating system that is required by WPFWPF is Windows XP SP2Windows XP SP2. Windows XP SP2Windows XP SP2コアは、でWPFWPF構築されたものを含め、すべての Windows アプリケーションのセキュリティ基盤を形成する複数のセキュリティ機能を提供します。The core of Windows XP SP2Windows XP SP2 provides several security features that form the security foundation for all Windows applications, including those built with WPFWPF. Windows VistaWindows Vista には、WPFWPF のセキュリティ機能が搭載され、それをさらに拡張しています。incorporates the security features of WPFWPF and extends them further. このトピックでは、WPFWPF にとって重要なセキュリティ機能の一式、および WPFWPF がそれらを統合してさらに多重防御を行う方法について説明します。This topic discusses the breadth of these security features that are important to WPFWPF, as well as how WPFWPF integrates with them to provide further defense-in-depth.

Microsoft Windows XP Service Pack 2 (SP2)Microsoft Windows XP Service Pack 2 (SP2)

Windows の一般的なレビューと強化に加えWindows XP SP2Windows XP SP2て、には次の3つの重要な機能があります。これについては、このトピックで説明します。In addition to a general review and strengthening of Windows, there are three key features from Windows XP SP2Windows XP SP2 that we will discuss in this topic:

  • /GS のコンパイル/GS compilation

  • Microsoft Windows UpdateMicrosoft Windows Update..

/GS のコンパイル/GS Compilation

Windows XP SP2Windows XP SP2は、CLR などのすべてのWPFWPF依存関係を含む多数のコアシステムライブラリを再コンパイルして、バッファーオーバーランを軽減することで保護を提供します。provides protection by recompiling many core system libraries, including all of the WPFWPF dependencies such as the CLR, to help mitigate buffer overruns. これは、C や C++ のコマンド ライン コンパイラの /GS パラメーターを使用して実現されます。This is achieved by using the /GS parameter with the C/C++ command-line compiler. バッファー オーバーランを明示的に避ける必要はありますが、/GS コンパイルは、故意であるかないかにかかわらずバッファー オーバーランによって生み出される潜在的な脆弱性に対する多重防御の一例となります。Although buffer overruns should be explicitly avoided, /GS compilation provides an example of a defense-in-depth against potential vulnerabilities that are inadvertently or maliciously created by them.

従来、バッファー オーバーランは、影響が大きいセキュリティ攻撃の多くの原因となっていました。Historically, buffer overruns have been the cause of many high-impact security exploits. バッファー オーバーランは、バッファーの境界を超えて書き込む、悪意のあるコードの挿入を許すコードの脆弱性を攻撃者が利用するときに発生します。A buffer overrun occurs when an attacker takes advantage of a code vulnerability that allows the injection of malicious code that writes past the boundaries of a buffer. これにより、攻撃者はプロセスを乗っ取ることができます。この場合、コードは、攻撃者のコードを実行するように関数のリターン アドレスを上書きすることで実行されます。This then allows an attacker to hijack the process in which the code is executing by overwriting the return address of a function to cause the execution of the attacker's code. 結果として、乗っ取ったプロセスと同じ特権を持つ任意のコードを実行する悪意のあるコードが生成されます。The result is malicious code that executes arbitrary code with the same privileges as the hijacked process.

概略でとらえると、/GS コンパイラ フラグは、ローカル文字列のバッファーを持つ関数のリターン アドレスを保護する特殊なセキュリティ クッキーを挿入して、潜在的なバッファー オーバーランから保護します。At a high level, the /GS compiler flag protects against some potential buffer overruns by injecting a special security cookie to protect the return address of a function that has local string buffers. 関数が返されると、セキュリティ クッキーはその前の値と比較されます。After a function returns, the security cookie is compared with its previous value. 値が変更されている場合、バッファー オーバーランが発生した可能性があるとして、プロセスはエラー状態によって停止されます。If the value has changed, a buffer overrun may have occurred and the process is stopped with an error condition. プロセスの停止により、悪意のある可能性があるコードの実行を防止できます。Stopping the process prevents the execution of potentially malicious code. 詳細については、「 /gs (バッファーセキュリティチェック) 」を参照してください。See /GS (Buffer Security Check) for more details.

WPFWPF は、/GS フラグでコンパイルされて、WPFWPF アプリケーションに別の防御層を追加します。is compiled with the /GS flag to add yet another layer of defense to WPFWPF applications.

Microsoft Windows 更新プログラムの拡張機能Microsoft Windows Update Enhancements

Windows XP SP2Windows XP SP2 では、Microsoft Windows UpdateMicrosoft Windows Update も改善され、更新プログラムのダウンロードとインストールのプロセスが簡略化されました。was also improved in Windows XP SP2Windows XP SP2 to simplify the process for downloading and installing updates. これらの変更により、特にセキュリティ更新プログラムに関して、システムを確実に最新の状態にすることで、WPFWPF のお客様のセキュリティ保護が大きく拡大しました。These changes significantly enhance security for WPFWPF customers by helping to ensure that their systems are up-to-date, particularly with respect to security updates.

Windows VistaWindows Vista

Windows VistaWindows Vista WPFWPF ユーザーは、「最小限の特権によるユーザー アクセス」、コードの整合性チェック、および特権の分離など、オペレーティング システムのさらなるセキュリティ機能強化の恩恵を受けられます。users on Windows VistaWindows Vista will benefit from the operating system's additional security enhancements, including "Least-Privilege User Access", code integrity checks, and privilege isolation.

ユーザー アカウント制御 [UAC]User Account Control (UAC)

現在、Windows ユーザーは管理者特権で実行される傾向があります。これは、多くのアプリケーションでインストールまたは実行のいずれかまたは両方を行う必要があるためです。Today, Windows users tend to run with administrator privileges because many applications require them for either installation or execution, or both. 既定のアプリケーションの設定をレジストリに書き込めることが、その一例です。Being able to write default application settings to the Registry is one example.

管理者特権で実行することの本当の意味は、管理者特権を付与されているプロセスからアプリケーションを実行することです。Running with administrator privileges really means that applications execute from processes that are granted administrator privileges. これによるセキュリティへの影響は、管理者特権で実行するプロセスを乗っ取る悪意のあるコードが、重要なシステム リソースへのアクセスなど、これらの権限を自動的に継承することです。The security impact of this is that any malicious code that hijacks a process running with administrator privileges will automatically inherit those privileges, including access to critical system resources.

このセキュリティの脅威から保護するための 1 つの方法は、必要最小限の特権でアプリケーションを実行することです。One way to protect against this security threat is to run applications with the least amount of privileges that are required. これは、最小特権の原則として知られ、Windows VistaWindows Vista オペレーティング システムの主要機能となっています。This is known as the principle of least privilege, and is a core feature of the Windows VistaWindows Vista operating system. この機能をユーザー アカウント制御 (UAC) といい、Windows VistaWindows Vista UAC によって主に次の 2 つの方法で使用されます。This feature is called User Account Control (UAC), and is used by Windows VistaWindows Vista UAC in two key ways:

  • ユーザーが管理者であっても、既定で UAC 特権を持つほとんどのアプリケーションを実行するために、管理者特権を必要とするアプリケーションのみが管理者特権で実行されます。To run most applications with UAC privileges by default, even if the user is an administrator; only applications that need administrator privileges will run with administrator privileges. 管理者特権で実行するためには、アプリケーションは、アプリケーション マニフェストで、またはセキュリティ ポリシーのエントリとして明示的にマークされる必要があります。To run with administrative privileges, applications must be explicitly marked in either their application manifest or as an entry in security policy.

  • 仮想化のような互換性に関する解決策を提供します。To provide compatibility solutions like virtualization. たとえば、多くのアプリケーションが C:\Program Files のような制限された場所への書き込みを試みるなどです。For example, many applications try to write to restricted locations like C:\Program Files. UAC の下で実行するアプリケーションでは、書き込みに管理者特権が必要でない、ユーザーごとの代替の場所が存在します。For applications executing under UAC, an alternative per-user location exists that does not require administrator privileges to write to. UAC の下で実行するアプリケーションでは、UAC は C:\Program Files を仮想化して、書き込もうとしているアプリケーションが、実際はユーザーごとの代替の場所に書き込むようにします。For applications running under UAC, UAC virtualizes C:\Program Files so that applications who think they are writing to it are actually writing to the alternative, per-user location. このような互換性の作業により、オペレーティング システムは、以前は UAC で実行できなかった多くのアプリケーションを実行できるようになります。This kind of compatibility work enables the operating system to run many applications that couldn't previously run in UAC.

コードの整合性チェックCode Integrity Checks

Windows VistaWindows Vista には、読み込み時または実行時に、悪意のあるコードがシステム ファイルやカーネルに挿入されないようにするための、より詳細なコード整合性チェックが組み込まれています。incorporates deeper code integrity checks to help prevent malicious code from being injected into system files or into the kernel at load/run time. これは、システム ファイルの保護を超えて動作します。This goes beyond system file protection.

ブラウザーでホストされるアプリケーションの制限付き権限のプロセスLimited Rights Process for Browser-Hosted Applications

ブラウザーでホストされる WPFWPF アプリケーションは、インターネット ゾーンのサンド ボックス内で実行します。Browser-hosted WPFWPF applications execute within the Internet zone sandbox. WPFWPFMicrosoft Internet Explorer との統合により、この保護は追加のサポートによって拡張されます。integration with Microsoft Internet Explorer extends this protection with additional support.

XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) は一般に、インターネット ゾーン アクセス許可セットによってセキュリティで保護されるため、互換性の観点から、これらの特権を取り除いても、XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) には害を及ぼしません。Since XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) are generally sandboxed by the Internet zone permission set, removing these privileges does not harm XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) from a compatibility perspective. 代わりに、追加の多重防御層が作成されます。セキュリティで保護されたアプリケーションが他のレイヤーを利用してプロセスを乗っ取ることができる場合、プロセスの特権は制限されたままとなります。Instead, an additional defense-in-depth layer is created; if a sandboxed application is able to exploit other layers and hijack the process, the process will still only have limited privileges.

最小特権のユーザーアカウントを使用する」を参照してください。See Using a Least-Privileged User Account.

共通言語ランタイムのセキュリティCommon Language Runtime Security

共通言語ランタイム (CLR) は、検証と検証、コードアクセスセキュリティ (CAS)、およびセキュリティクリティカルな方法論など、多くの重要なセキュリティ上の利点を提供します。The common language runtime (CLR) offers a number of key security benefits that include validation and verification, Code Access Security (CAS), and the Security Critical Methodology.

確認と検証Validation and Verification

アセンブリの分離と整合性を提供するために、CLR は検証プロセスを使用します。To provide assembly isolation and integrity, the CLR uses a process of validation. CLR 検証では、アセンブリの外部をポイントするアドレスのポータブル実行可能 (PE) ファイル形式を検証することによって、アセンブリが分離されていることを確認します。CLR validation ensures that assemblies are isolated by validating their Portable Executable (PE) file format for addresses that point outside the assembly. CLR 検証では、アセンブリ内に埋め込まれているメタデータの整合性も検証されます。CLR validation also validates the integrity of the metadata that is embedded within an assembly.

型の安全性を確保し、一般的なセキュリティの問題 (バッファーオーバーランなど) を防止し、サブプロセスの分離を通じてサンドボックスを有効にするために、CLR セキュリティでは検証の概念を使用します。To ensure type safety, help prevent common security issues (e.g. buffer overruns), and enable sandboxing through sub-process isolation, CLR security uses the concept of verification.

マネージド アプリケーションは、Microsoft Intermediate Language (MSIL) にコンパイルされます。Managed applications are compiled into Microsoft Intermediate Language (MSIL). マネージド アプリケーション内のメソッドを実行する際、その MSIL は Just-In-Time (JIT) コンパイルを通じてネイティブ コードにコンパイルされます。When methods in a managed application are executed, its MSIL is compiled into native code through Just-In-Time (JIT) compilation. JIT コンパイルには、コードが以下を行わないようにする多数の安全性と堅牢性ルールを適用する検証プロセスがあります。JIT compilation includes a verification process that applies many safety and robustness rules that ensure code does not:

  • 型のコントラクトの違反Violate type contracts

  • バッファー オーバーランの導入Introduce buffer overruns

  • 乱暴なメモリへのアクセスWildly access memory.

マネージド コードが信頼されたコードと見なされない限り、検証ルールに適合しないマネージド コードの実行は許可されません。Managed code that does not conform to verification rules is not allowed to execute, unless it is considered trusted code.

検証可能なコードの利点は、が .NET Framework WPFWPF上に構築される主な理由です。The advantage of verifiable code is a key reason why WPFWPF builds on the .NET Framework. 検証可能なコードを使用する範囲で、起こりうる脆弱性の悪用の可能性が大幅に減少します。To the extent that verifiable code is used, the possibility of exploiting possible vulnerabilities is greatly lowered.

コード アクセス セキュリティCode Access Security

クライアント コンピューターは、ファイル システム、レジストリ、印刷サービス、ユーザー インターフェイス、リフレクション、および環境変数など、マネージド アプリケーションがアクセスできる多種多様なリソースを公開します。A client machine exposes a wide variety of resources that a managed application can have access to, including the file system, the Registry, printing services, the user interface, reflection, and environment variables. マネージアプリケーションがクライアントコンピューター上のリソースにアクセスできるようにするには、そのアプリケーションに対して .NET Framework アクセス許可を持っている必要があります。Before a managed application can access any of the resources on a client machine, it must have .NET Framework permission to do so. CA のアクセス許可は、 CodeAccessPermissionのサブクラスです。CAS は、マネージアプリケーションがアクセスできるリソースごとに1つのサブクラスを実装します。A permission in CAS is a subclass of the CodeAccessPermission; CAS implements one subclass for each resource that managed applications can access.

管理対象アプリケーションが実行を開始するときに CA によって付与されるアクセス許可のセットは、アクセス許可セットと呼ばれ、アプリケーションによって提供される証拠によって決定されます。The set of permissions that a managed application is granted by CAS when it starts executing is known as a permission set and is determined by evidence provided by the application. WPFWPF アプリケーションでは、提供される証拠は、アプリケーションが起動される場所またはゾーンです。For WPFWPF applications, the evidence that is provided is the location, or zone, from which the applications are launched. CA は次のゾーンを識別します。CAS identifies the following zones:

  • マイ コンピューターMy Computer. クライアント コンピューターから起動するアプリケーション (完全信頼)。Applications launched from the client machine (Fully Trusted).

  • ローカル イントラネットLocal Intranet. イントラネットから起動するアプリケーション。Applications launched from the intranet. (部分信頼)。(Somewhat Trusted).

  • インターネットInternet. インターネットから起動するアプリケーション。Applications launched from the Internet. (最小信頼)。(Least Trusted).

  • 信頼済みサイトTrusted Sites. ユーザーから信頼すると特定されたアプリケーション。Applications identified by a user as being trusted. (最小信頼)。(Least Trusted).

  • 信頼されないサイトUntrusted Sites. ユーザーから信頼しないと特定されたアプリケーション。Applications identified by a user as being untrusted. (非信頼)。(Untrusted).

これらの各ゾーンに対して、CA は、それぞれに関連付けられている信頼のレベルに一致するアクセス許可を含む定義済みのアクセス許可セットを提供します。For each of these zones, CAS provides a predefined permission set that includes the permissions which matches the level of trust associated with each. 不足している機能には次が含まれます。These include:

  • FullTrustFullTrust. マイコンピューターゾーンから起動するアプリケーションの場合。For applications launched from the My Computer zone. 可能性のあるすべてのアクセス許可が付与されます。All possible permissions are granted.

  • LocalIntranetLocalIntranet. ローカルイントラネットゾーンから起動するアプリケーションの場合。For applications launched from the Local Intranet zone. 分離ストレージ、UI の無制限のアクセス、制約のないファイル ダイアログ、制限付きのリフレクション、環境変数へのアクセス制限など、クライアント コンピューターのリソースへの中程度のアクセスを提供するアクセス許可のサブセットが付与されます。A subset of permissions are granted to provide moderate access to a client machine’s resources, including isolated storage, unrestricted UI access, unrestricted file dialogs, limited reflection, limited access to environment variables. レジストリのような重要なリソースに対するアクセス許可は提供されません。Permissions for critical resources like the Registry are not provided.

  • インターネットInternet. インターネットまたは信頼済みサイトゾーンから起動するアプリケーションの場合。For applications launched from the Internet or Trusted Sites zone. 分離ストレージ、ファイルを開くのみ、および制限付きの UI など、クライアント コンピューターに制限付きのアクセス権を付与するため、アクセス許可のサブセットを付与します。A subset of permissions are granted to provided limited access to a client machine’s resources, including isolated storage, file open only, and limited UI. 基本的に、このアクセス許可セットは、アプリケーションをクライアントコンピューターから分離します。Essentially, this permission set isolates applications from the client machine.

信頼されていないサイトゾーンからのものとして識別されたアプリケーションには、ca によってまったくアクセス許可が付与されません。Applications identified as being from the Untrusted Sites zone are granted no permissions by CAS at all. その結果、定義済みのアクセス許可セットは存在しません。Consequently, a predefined permission set does not exist for them.

次の図は、ゾーン、アクセス許可セット、アクセス許可、およびリソース間の関係を示しています。The following figure illustrates the relationship between zones, permission sets, permissions, and resources:

CAS アクセス許可セットを示す図。

インターネットゾーンのセキュリティサンドボックスの制限は、を含むWPFWPF、XBAP がシステムライブラリからインポートするすべてのコードに同様に適用されます。The restrictions of the Internet zone security sandbox apply equally to any code that an XBAP imports from a system library, including WPFWPF. これにより、WPFWPF であっても、コードはビットごとにロック ダウンされます。This ensures that every bit of the code is locked down, even WPFWPF. 残念ながら、実行できるようにするために、XBAP は、インターネットゾーンのセキュリティサンドボックスで有効になっているものよりも多くのアクセス許可を必要とする機能を実行する必要があります。Unfortunately, to be able to execute, an XBAP needs to execute functionality that requires more permissions than those enabled by the Internet zone security sandbox.

次のページを含む XBAP アプリケーションを考えてみましょう。Consider an XBAP application that includes the following page:

FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()

' Perform operation that uses the assert

' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()

この xbap を実行するにはWPFWPF 、基になるコードが、次のように、呼び出し元の xbap で使用できるよりも多くの機能を実行する必要があります。To execute this XBAP, the underlying WPFWPF code must execute more functionality than is available to the calling XBAP, including:

  • レンダリング用のウィンドウハンドル (HWND) の作成Creating a window handle (HWND) for rendering

  • メッセージのディスパッチDispatching messages

  • Tahoma フォントの読み込みLoading the Tahoma font

セキュリティの観点から、セキュリティで保護されたアプリケーションからこれらの操作のいずれかに直接アクセスを許可すると、致命的な状態になります。From a security point of view, allowing direct access to any of these operations from the sandboxed application would be catastrophic.

幸い、WPFWPF は、セキュリティで保護されたアプリケーションの代わりに、これらの操作が昇格した特権で実行できるようにすることで、この状況に対応します。Fortunately, WPFWPF caters to this situation by allowing these operations to execute with elevated privileges on behalf of the sandboxed application. すべてWPFWPFの操作は、XBAP のアプリケーションドメインの制限付きインターネットゾーンのセキュリティアクセス許可に対しWPFWPFてチェックされますが、(他のシステムライブラリと同様に) には、可能なすべてのアクセス許可を含むアクセス許可セットが付与されます。While all WPFWPF operations are checked against the limited Internet zone security permissions of the application domain of the XBAP, WPFWPF (as with other system libraries) is granted a permission set that includes all possible permissions.

そのためには、WPFWPF が昇格した特権を受け取る一方、それらの特権がホスト アプリケーション ドメインのインターネット ゾーンのアクセス許可セットによって制御されないようにする必要があります。This requires that WPFWPF receives elevated privileges while preventing those privileges from being governed by the Internet zone permission set of the host application domain.

WPFWPFは、アクセス許可のAssertメソッドを使用してこれを行います。does this by using the Assert method of a permission. 次のコードは、その方法を示しています。The following code shows how this happens.

FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()

' Perform operation that uses the assert

' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()

アサートは基本的に、でWPFWPF必要とされる無制限のアクセス許可が、XBAP のインターネットゾーンのアクセス許可によって制限されないようにします。The Assert essentially prevents the unlimited permissions required by WPFWPF from being restricted by the Internet zone permissions of the XBAP.

プラットフォームの観点から、 WPFWPFassertを正しく使用する必要があります。 assertを正しく使用しないと、悪意のあるコードによって特権が昇格される可能性があります。From a platform perspective, WPFWPF is responsible for using Assert correctly; an incorrect use of Assert could enable malicious code to elevate privileges. そのため、必要な場合にのみAssertを呼び出し、サンドボックスの制限をそのまま維持することが重要です。Consequently, it is important then to only call Assert when needed, and to ensure that sandbox restrictions remain intact. たとえば、セキュリティで保護されたコードでは、ランダムなファイルを開くことはできませんが、フォントは使用できます。For example, sandboxed code is not allowed to open random files, but it is allowed to use fonts. WPFWPFサンドボックスアプリケーションがAssertを呼び出してフォント機能を使用できるWPFWPFようにします。また、では、サンドボックス化されたアプリケーションの代わりに、これらのフォントが含まれていることがわかっているファイルを読み取りますenables sandboxed applications to use font functionality by calling Assert, and for WPFWPF to read files known to contain those fonts on behalf of the sandboxed application.

ClickOnce 配置ClickOnce Deployment

Clickonce は .NET Framework に含まれる包括的な配置テクノロジであり、と統合Microsoft Visual StudioMicrosoft Visual Studioされています (詳細については、「 clickonce のセキュリティと配置」を参照してください)。ClickOnce is a comprehensive deployment technology that is included with .NET Framework, and integrates with Microsoft Visual StudioMicrosoft Visual Studio (see ClickOnce security and deployment for detailed information). スタンドWPFWPFアロンアプリケーションは clickonce を使用して配置できますが、ブラウザーでホストされるアプリケーションは clickonce で配置する必要があります。Standalone WPFWPF applications can be deployed using ClickOnce, while browser-hosted applications must be deployed with ClickOnce.

ClickOnce を使用してデプロイされたアプリケーションには、コードアクセスセキュリティ (CAS) に対する追加のセキュリティレイヤーが与えられます。基本的に、ClickOnce によって配置されたアプリケーションは、必要なアクセス許可を要求します。Applications deployed using ClickOnce are given an additional security layer over Code Access Security (CAS); essentially, ClickOnce deployed applications request the permissions that they need. これらのアプリケーションが、アプリケーションの配置元ゾーンのアクセス許可セット数を超えていない場合、これらのアプリケーションには必要なアクセス許可のみが付与されます。They are granted only those permissions if they do not exceed the set of permissions for the zone from which the application is deployed. 起動ゾーンのアクセス許可セットによって提供されるアクセス許可よりも小さい場合でも、必要なアクセス許可だけを減らすことで、アプリケーションがアクセスできるリソースの数が最小限に抑えられます。By reducing the set of permissions to only those that are needed, even if they are less than those provided by the launch zone's permission set, the number of resources that the application has access to is reduced to a bare minimum. その結果、アプリケーションが乗っ取られた場合、クライアント コンピューターの損傷の可能性が低減します。Consequently, if the application is hijacked, the potential for damage to the client machine is reduced.

セキュリティ クリティカルな方法Security-Critical Methodology

XBAP WPFWPFアプリケーションのインターネットゾーンサンドボックスを有効にするためのアクセス許可を使用するコードは、可能な限り高いレベルのセキュリティ監査および制御に保持する必要があります。The WPFWPF code that uses permissions to enable the Internet zone sandbox for XBAP applications must be held to highest possible degree of security audit and control. この要件を容易にするために、.NET Framework では、特権を昇格するコードを管理するための新しいサポートを提供しています。To facilitate this requirement, .NET Framework provides new support for managing code that elevates privilege. 具体的には、CLR を使用すると、特権を昇格するコードを識別SecurityCriticalAttributeし、でマークすることSecurityCriticalAttributeができます。でマークされていないコードは、この方法で透過的になります。Specifically, the CLR enables you to identify code that elevates privilege and mark it with the SecurityCriticalAttribute; any code not marked with SecurityCriticalAttribute becomes transparent using this methodology. 逆に、SecurityCriticalAttribute でマークされていないマネージド コードは特権の昇格ができなくなります。Conversely, managed code that is not marked with SecurityCriticalAttribute is prevented from elevating privilege.

セキュリティクリティカルな方法では、 WPFWPF セキュリティクリティカルなカーネルに特権を昇格するコードの編成が可能になり、残りの部分は透過的になります。The Security-Critical Methodology allows the organization of WPFWPF code that elevates privilege into security-critical kernel, with the remainder being transparent. セキュリティクリティカルなコードを分離することWPFWPFにより、エンジニアリングチームは、セキュリティクリティカルなカーネルに対する追加のセキュリティ分析とソース管理に重点を置いています (「 WPF のセキュリティ方針-セキュリティ」を参照してください)。エンジニアリング)。Isolating the security-critical code enables the WPFWPF engineering team focus an additional security analysis and source control on the security-critical kernel above and beyond standard security practices (see WPF Security Strategy - Security Engineering).

.NET Framework では、開発者が (APTCA) でAllowPartiallyTrustedCallersAttributeマークされ、ユーザーのグローバルアセンブリキャッシュ (GAC) に展開されるマネージアセンブリを記述できるようにすることで、信頼できるコードが XBAP インターネットゾーンサンドボックスを拡張できることに注意してください。Note that .NET Framework permits trusted code to extend the XBAP Internet zone sandbox by allowing developers to write managed assemblies that are marked with AllowPartiallyTrustedCallersAttribute (APTCA) and deployed to the user's Global Assembly Cache (GAC). アセンブリを APTCA でマークすることは、機密性の高いセキュリティ操作です。インターネットからの悪意のあるコードなど、いずれのコードもそのアセンブリを呼び出すことができるためです。Marking an assembly with APTCA is a highly sensitive security operation as it allows any code to call that assembly, including malicious code from the Internet. これを実施する際は十分注意し、ベスト プラクティスを使用する必要があります。ソフトウェアをインストールするためには、ユーザーがそのソフトウェアを信頼することを選択する必要があります。Extreme caution and best practices must be used when doing this and users must choose to trust that software in order for it to be installed.

Microsoft Internet Explorer のセキュリティMicrosoft Internet Explorer Security

Microsoft Internet Explorer 6 (SP2) には、セキュリティの問題を減らし、セキュリティの構成を簡素化するだけではありませんXAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs)が、のユーザーのセキュリティ強化によってセキュリティが強化された機能がいくつかあります。Beyond reducing security issues and simplifying security configuration, Microsoft Internet Explorer 6 (SP2) contains several features that security improvements that enhance security for users of XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs). これらの機能の推進により、ユーザーが閲覧の制御を拡大できるようにしています。The thrust of these features attempts to allow users greater control over their browsing experience.

IE6 SP2 より前では、ユーザーは次のいずれかの影響を受ける可能性がありました。Prior to IE6 SP2, users could be subject to any of the following:

  • ランダムなポップアップ ウィンドウ。Random popup windows.

  • スクリプトのリダイレクトの混乱。Confusing script redirection.

  • 一部の Web サイトでの多数のセキュリティ ダイアログ。Numerous security dialogs on some Web sites.

場合によっては、信頼されていない Web サイトはユーザー インターフェイス (UI)user interface (UI) 、インストールをスプーフィングしたり、ユーザーがキャンセルした場合でも Microsoft ActiveX のインストールダイアログボックスを繰り返し表示したりすることによって、ユーザーのトリックを試みます。In some cases, untrustworthy Web sites would try to trick users by spoofing installation ユーザー インターフェイス (UI)user interface (UI) or repeatedly showing a Microsoft ActiveX installation dialog box, even though the user may have canceled it. これらの方法によって、大多数のユーザーが騙されて不適切な判断を行い、スパイウェア アプリケーションのインストールにつながる可能性があります。Using these techniques, it is possible that a significant number of users have been tricked into making poor decisions that resulted with the installation of spyware applications.

IE6 SP2 には、ユーザーによる開始の概念を中心とした、こうした種類の問題を軽減するための機能がいくつか用意されています。IE6 SP2 includes several features to mitigate these types of issues, which revolve around the concept of user initiation. ユーザーがアクションの前にリンクまたはページ要素をクリックしたことがユーザーによって検出された場合 (ユーザーの開始と呼ばれます)、ページ上のスクリプトによって同様のアクションがトリガーされる場合とは異なる方法で処理されます。IE6 SP2 detects when a user has clicked on a link or page element prior to an action, which is known as user initiation, and treats it differently than when a similar action is instead triggered by the script on a page. たとえば、IE6 SP2 には、ページがポップアップを作成する前にユーザーがボタンをクリックしたことを検出するポップアップブロックが組み込まれています。As an example, IE6 SP2 incorporates a Pop-Up Blocker that detects when a user clicks a button prior to the page creating a pop-up. これにより、ユーザーが要求したり希望したりしないポップアップを防止しながら、ほとんど無害なポップアップを許可することができます。This enables IE6 SP2 to allow most innocuous pop-ups while preventing pop-ups that users neither ask for nor want. ブロックされたポップアップは、新しい情報バーの下にトラップされます。これにより、ユーザーは手動でブロックをオーバーライドしてポップアップを表示できます。Blocked pop-ups are trapped under the new Information Bar, which allows the user to manually override the block and view the pop-up.

[セキュリティの保存] プロンプトを開く/ためにも、同じユーザー開始ロジックが適用されます。The same user-initiation logic is also applied to Open/Save security prompts. ActiveX インストールのダイアログボックスは、以前にインストールされたコントロールからのアップグレードを表す場合を除き、常に情報バーの下にトラップされます。ActiveX installation dialog boxes are always trapped under the Information Bar unless they represent an upgrade from a previously installed control. これらの対策を組み合わせると、より安全かつ制御されたユーザー エクスペリエンスがユーザーに提供されます。ユーザーを攻撃して不要または悪意のあるソフトウェアをインストールさせるサイトからユーザーが保護されるためです。These measures combine to give users a safer, more controlled user experience since they are protected against sites which harass them to install either unwanted or malicious software.

また、これらの機能により、IE6 SP2 を使用するお客様は、アプリケーションをダウンロードWPFWPFしてインストールできる web サイトを参照できます。These features also protect customers who use IE6 SP2 to browse to web sites that allow them to download and install WPFWPF applications. これは特に、IE6 SP2 ではユーザーエクスペリエンスが向上しているため、の構築に使用されたテクノロジ (など) WPFWPFに関係なく、悪意のあるアプリケーションや不正なアプリケーションをユーザーがインストールする機会が減ります。In particular, this is because IE6 SP2 offers a better user experience that reduces the chance for users to install malicious or devious applications irrespective of what technology was used to build it, including WPFWPF. WPFWPFは、ClickOnce を使用して、インターネット経由でのアプリケーションのダウンロードを容易にすることで、これらの保護を強化します。adds to these protections by using ClickOnce to facilitate downloading of its applications over the Internet. XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) はインターネット ゾーンのセキュリティ サンドボックス内で実行するので、シームレスに起動することができます。Since XAML ブラウザー アプリケーション (XBAP)XAML browser applications (XBAPs) execute within an Internet zone security sandbox, they can be seamlessly launched. 一方、スタンドアロンの WPFWPF アプリケーションでは、実行するには完全な信頼が必要になります。On the other hand, standalone WPFWPF applications require full trust to execute. これらのアプリケーションの場合、ClickOnce は起動プロセス中にセキュリティダイアログボックスを表示して、アプリケーションの追加のセキュリティ要件の使用を通知します。For these applications, ClickOnce will display a security dialog box during the launch process to notify the use of the application's additional security requirements. ただし、これはユーザーが開始する必要があり、ユーザーが開始したロジックによって制御されるとともに、キャンセルが可能です。However, this must be user-initiated, will also be governed by user initiated logic, and can be canceled.

Internet Explorer 7 には、セキュリティに対する継続的なコミットメントの一環として、IE6 SP2 のセキュリティ機能が組み込まれ、拡張されています。Internet Explorer 7 incorporates and extends the security capabilities of IE6 SP2 as part of an ongoing commitment to security.

関連項目See also