適用先
.NET Framework 3.5 Service Pack 1 Windows 7 Service Pack 1 Windows 7 Enterprise Windows 7 Professional Windows 7 Ultimate Windows 7 Home Premium Windows 7 Home Basic Windows 7 Enterprise Windows 7 Professional Windows 7 Ultimate Windows 7 Home Premium Windows 7 Home Basic Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Standard Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 Service Pack 2 Windows Server 2008 for Itanium-Based Systems Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 Web Edition Windows Vista Service Pack 2 Windows Vista Business Windows Vista Enterprise Windows Vista Home Basic Windows Vista Home Premium Windows Vista Starter Windows Vista Ultimate Windows Vista Enterprise 64-bit Edition Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Vista Business 64-bit Edition Microsoft Windows Server 2003 Service Pack 2 Microsoft Windows XP Professional x64 Edition Microsoft Windows XP Service Pack 3 Microsoft Windows XP Home Edition Microsoft Windows XP Professional

概要

Microsoft セキュリティ更新プログラム MS11-100 は、HTTP 要求内のフォーム キー、ファイル、および JSON メンバーの最大数を 1000 に制限します。この変更のために、ASP.NET アプリケーションは、1000 を超えるこれらの要素を含む要求を拒否します。このような種類の要求を実行する HTTP クライアントは拒否され、Web ブラウザーにエラー メッセージが表示されます。このエラー メッセージには通常 HTTP 500 ステータス コードが含まれています。この新しい制限は、アプリケーションごとに構成できます。構成手順については、「解決方法」を参照してください。

現象

数多くのフォーム キー、ファイル、または JSON ペイロードを含む ASP.NET 要求を実行すると、サーバーからエラー応答を受け取ります。サーバーのアプリケーション ログには、ASP.NET の特定のバージョンであるソース、およびイベント ID 1309 を含む警告エントリが記録されます。イベント ログには、次のいずれかのメッセージが含まれています。

メッセージ 1:

アプリケーション情報:     アプリケーション ドメイン: /LM/W3SVC/1/ROOT/<アプリケーション ドメイン>    信頼レベル: 中     アプリケーションの仮想パス: <VDIR パス>    アプリケーションのパス: <アプリケーションのパス>コンピューター名:<コンピューター名>プロセス情報:     プロセス ID: 0001     プロセス名: w3wp.exe     アカウント名: IIS APPPOOL\DefaultAppPool 例外情報: 例外の種類: HttpException     例外メッセージ: URL にエンコードされたフォーム データが有効ではありません。   System.Web.HttpRequest.FillInFormCollection()   System.Web.HttpRequest.get_Form()   System.Web.HttpRequest.get_HasForm()   System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)   System.Web.UI.Page.DeterminePostBackMode()   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

メッセージ 2:

アプリケーション情報:     アプリケーション ドメイン: /LM/W3SVC/1/ROOT/<アプリケーション ドメイン>     信頼レベル: 中     アプリケーションの仮想パス: <VDIR パス>     アプリケーションのパス: <アプリケーションのパス>     コンピューター名:<コンピューター名>プロセス情報:     プロセス ID: 0001    プロセス名: w3wp.exe     アカウント名: IIS APPPOOL\DefaultAppPool 例外情報: 例外の種類: InvalidOperationException     例外メッセージ: オブジェクトの現在の状態に問題があるため、操作は有効ではありません。    System.Web.HttpRequest.FillInFilesCollection()   System.Web.HttpRequest.get_Files()   FileUpload.Page_Load(Object sender, EventArgs e)    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)   System.Web.UI.Control.OnLoad(EventArgs e)   System.Web.UI.Control.LoadRecursive()   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

メッセージ 3:

アプリケーション情報:     アプリケーション ドメイン: /LM/W3SVC/1/ROOT/<アプリケーション ドメイン>     信頼レベル: 中     アプリケーションの仮想パス: <VDIR パス>     アプリケーションのパス: <アプリケーションのパス>    コンピューター名:<コンピューター名>プロセス情報:     プロセス ID: 0001    プロセス名: w3wp.exe     アカウント名: IIS APPPOOL\DefaultAppPool 例外情報: 例外の種類: InvalidOperationException     例外メッセージ: オブジェクトの現在の状態に問題があるため、操作は有効ではありません。    System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)   System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)   System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)   System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)   System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)   Failing.Page_Load(Object sender, EventArgs e)    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)   System.Web.UI.Control.OnLoad(EventArgs e)   System.Web.UI.Control.LoadRecursive()   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

IIS のログ ファイルに次のようなエントリが表示されます。

2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187

原因

セキュリティ情報 MS11-100 が提供するマイクロソフトセキュリティ更新プログラムは、ASP.NET が要求で受け入れるフォーム キー、ファイル、および JSON メンバーの既定の最大数を 1,000 に変更します。この変更は、マイクロソフトセキュリティ情報 MS11-100 に記載されているサービス拒否攻撃に関する脆弱性を解決するために行われました。

解決方法

フォーム キーまたはファイルのこの制限に達するアプリケーションの場合は、ASP.NET アプリケーションの構成ファイル内で ASP.NET appSetting aspnet:MaxHttpCollectionKeys を下に示すように変更できます。この設定により、「現象」に記載されているエラー メッセージ 1 およびエラー メッセージ 2 が解決します。

<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>

注: x86 ベースのシステムで ASP.NET 1.1 を使用している場合は、DWORD 値を次のレジストリ キーに追加することによって設定が調整されます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

x64 ベースのシステムで ASP.NET 1.1 を使用している場合は、DWORD 値を次のレジストリ キーに追加することによって設定が調整されます。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

JSON ペイロードのこの制限に達するアプリケーションの場合は、ASP.NET アプリケーションの構成ファイル内で ASP.NET appSetting aspnet:MaxJsonDeserializerMembers を下に示すように変更できます。この設定により、「現象」に記載されているエラー メッセージ 3 が解決します。

<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>

注: この値を既定の設定から増やすと、セキュリティ情報 MS11-100 に記載されているサービス拒否に関するサーバーの脆弱性が悪化します。

関連情報

セキュリティ情報 MS11-100 の詳細については、次の TechNet の資料を参照してください。

マイクロソフト セキュリティ情報 MS11-100 - 緊急詳細については、以下のサポート技術情報番号をクリックしてください。

2638420 [MS11-100] .NET Framework の脆弱性により、特権が昇格される (2011 年 12 月 29 日)

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。