メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

概要

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

ヘルプを表示

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

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

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×