ASP.NET の正規化の問題を確認する HTTP モジュール

文書翻訳 文書翻訳
文書番号: 887289 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

ユーザーによる ASP.NET アプリケーションの保護を支援するため、マイクロソフトは正規化の問題の最適な対応策を実装した HTTP モジュールを公開しました。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887459 ASP.NET の正規化の問題をプログラムによって確認する方法
ASP.NET のバージョンを確認する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
318785 .NET Framework に Service Pack がインストールされているかどうかを確認する方法
ASP.NET における正規化の問題の詳細については、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/security/incident/aspnet.mspx

現象

Web サーバーは URL を受信すると、その要求にファイル システム パスを割り当て、応答を決定します。この割り当てに使用される正規化ルーチンでは、URL を正しく解析して、予期しないコンテンツの提供や処理を防ぐ必要があります。正規化の問題に対処していないと、予期しない結果が発生することがあります。正規化の詳細については、以下のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/security/guidance/secmod77.mspx

解決方法

Microsoft.Web.ValidatePathModule.dll - HTTP モジュール

ダウンロード情報

以下のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。

元に戻す画像を拡大する
ダウンロード
VPModule.msi パッケージ

リリース日 : 2004 年 10 月 7 日

マイクロソフトのサポート ファイルのダウンロード方法を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用して、配布ファイルのウイルス チェックを行っています。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

必要条件

VPModule.msi ファイルは、32 ビット版 Microsoft .NET Framework 用に設計されています。

VPModule.msi ファイルをインストールする前に、コンピュータ上の Machine.config ファイルをすべてバックアップしてください。Machine.config ファイルのバックアップ コピーを作成するには、以下の手順を実行します。
  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。[名前] ボックスに cmd と入力し、[OK] をクリックします。
  2. それぞれの Machine.config ファイルが格納されているフォルダに移動します。Machine.config ファイルは以下のフォルダにあります。<framework version number> は、システムにインストールされている Microsoft .NET Framework のバージョン番号に置き換えてください。
    %windir%\Microsoft.NET\Framework\<framework version number>\CONFIG
    たとえば、ドライブ C に .NET Framework 1.1 がインストールされている場合は、次のコマンドを入力し、Enter キーを押します。
    cd /d %windir%\microsoft.net\framework\v1.1.4322\config
  3. 次のコマンドを実行して、Machine.config ファイルのバックアップ コピーを作成します。
    copy machine.config machine.config.bak
システムにインストールされている .NET Framework のインスタンスごとに、この手順を実行します。

インストール情報

マイクロソフトは、VPModule.msi という名前のインストール パッケージをリリースしました。VPModule.msi ファイルを実行すると、システムに Microsoft.Web.ValidatePathModule.dll ファイルがインストールされます。このファイルのインストールにより、システムにインストールされている .NET Framework のすべてのバージョンで、Machine.config ファイルに HTTP モジュールの新しいエントリが追加されます。

インストール パッケージを使用するには、VPModule.msi ファイルをダウンロードし、パッケージをダブルクリックしてインストールを開始し、表示される手順を実行します。

VPModule.msi によって実行される処理

最初に Microsoft.Web.ValidatePathModule.dll という名前のファイルが抽出されます。次に、システム上に存在するすべての Machine.config ファイルに次のようなエントリが追加されます。
    <system.web>
        <httpModules>
            <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
        </httpModules>
    </system.web>
その後、Microsoft.Web.ValidatePathModule.dll ファイルがグローバル アセンブリ キャッシュ (GAC) に追加されます。

Microsoft.Web.ValidatePathModule.dll ファイルのプログラムの動作を理解する必要のある開発者のため、以下にソース コードを掲載します。
namespace Microsoft.Web {
??? public class ValidatePathModule : IHttpModule {
??????? public ValidatePathModule() {
??????? }
??????? void IHttpModule.Init(HttpApplication app) {
??????????? app.BeginRequest += new EventHandler(this.OnBeginRequest);
????? ??}
??????? void IHttpModule.Dispose() {
??????? }
??????? void OnBeginRequest(Object source, EventArgs eventArgs) {
??????????? HttpRequest request = (source as HttpApplication).Request;
??????????? string physicalPath = request.PhysicalPath;
??????????? if (request.Path.IndexOf('\\') >= 0 || Path.GetFullPath(physicalPath) != physicalPath) {
??????????????? throw new HttpException(404, "Not Found");
??????????? }
??????? }
??? }
}
モジュールのインストール時に使用できるコマンド ライン スイッチの詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/aa367988.aspx

インストールの確認についての情報

モジュールが正しくインストールされると、次のレジストリ キーが追加されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{30EFFF0C-573D-46FB-8AD5-00887289261A}
: このレジストリ キーは、この資料の「カスタム インストールについての情報」に記載されている手順で (手動で) HTTP モジュールをインストールした場合は追加されません。/a オプションを指定した場合、ファイルの展開のみが行われ、レジストリは更新されません。

アンインストール情報

モジュールのインストールによってシステムに加えられた変更を取り消すには、VPModule.msi ファイルを実行して [削除] をクリックします。または、コントロール パネルの [アプリケーションの追加と削除] を使用します。

無人インストールについての情報

これらの変更を無人モードで行うには、次のコマンドを実行します。
msiexec /i vpmodule.msi /qb-
これらの変更を無人モードで取り消すには、次のコマンドを実行します。
msiexec /x vpmodule.msi /qb-

カスタム インストールについての情報

HTTP モジュールを手動でインストールするには、以下の手順を実行します。
  1. Machine.config ファイルをすべてバックアップします。手順については、この資料の「必要条件」を参照してください。
  2. パッケージをダウンロードします。手順については、この資料の「ダウンロード情報」を参照してください。
  3. 次のコマンドを実行して、VPModule.msi ファイルから Microsoft.Web.ValidatePathModule.dll ファイルを指定の場所に展開します。
    msiexec /a vpmodule.msi
  4. 次のコマンドを実行して、モジュールを GAC にコピーします。
    gacutil -i microsoft.web.validatepathmodule.dll
    : モジュールは、指定した場所に新しく作成される "Microsoft ValidatePath Module" という名前のフォルダに展開されます。
  5. Machine.config ファイルをエディタで開き、<httpModules> セクションに次のエントリを追加します。同じエントリをすべての Machine.config ファイルに追加します。
    <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
    

既知の問題

既知の問題を以下に示します。
  • Microsoft.Web.ValidatePathModule.dll ファイルのエントリが Machine.config ファイルの <httpModule> セクションに正常に追加されていることがインストーラによって確認されます。ただし、特定の状況では、この資料の「現象」に記載されている問題が引き続き発生することがあります。

    この現象は、Web.config ファイルが存在し、Machine.config で定義されている一覧が Web.config ファイルによってクリアされる場合に発生します。たとえば、Web.config ファイルに次のようなエントリが存在すると、この現象が発生することがあります。
    <httpModules>
        <clear/>
    </httpModules>
    
    このような構成が行われていると、アプリケーションでは、この資料に記載されているモジュールが実行されません。通常、このような構成は、Machine.config で定義されている HTTP モジュールをアプリケーションで使用せず、一覧をクリアしてアプリケーション独自の一覧を定義する場合に使用されます。
  • .NET Framework の異なるバージョンをインストールする場合は、VPModule.msi ファイルをアンインストールした後、もう一度インストールする必要があります。
  • SQL Server Reporting Services と VPModule.msi の問題の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    887787 ASP.NET ValidatePath モジュールのインストール後、Reporting Services からエラー メッセージが表示されることがある

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887405 Windows インストーラとグループ ポリシーを使用して Active Directory ドメインに VPModule.msi を展開する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887404 Systems Management Server 2003 を使用して ValidatePath モジュールを展開する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887290 ASP.NET ValidatePath Module Scanner (VPModuleScanner.js) の使用方法
セッション状態の詳細については、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconsessionstate.asp

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 887289 (最終更新日 2004-10-15) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 887289 - 最終更新日: 2007年12月3日 - リビジョン: 3.5
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
キーワード:?
kbsecurity kbtshoot KB887289
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com