多くのフォーム キー、ファイル、または JSON ペイロード メンバーを含む ASP.NET 要求が例外が発生して失敗する

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

概要

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 日)

プロパティ

文書番号: 2661403 - 最終更新日: 2012年11月29日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 2.0 Service Pack 1 (x86)
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • 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 Web Server 2008
  • 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 Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3?を以下の環境でお使いの場合
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
キーワード:?
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
Microsoft Knowledge Base の免責: 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