Applies To.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

Zusammenfassung

Das Microsoft-Sicherheitsupdate MS11-100 begrenzt die Höchstanzahl der Formularschlüssel, Dateien und JSON-Mitglieder in einer HTTP-Anforderung auf 1.000. Diese Änderung wird ASP.NET-Anwendungen Zurückweisungsanforderungen, die mehr als 1.000 dieser Elemente aufweisen. HTTP-Clients mit derartigen Anforderungen werden abgelehnt, und im Webbrowser wird eine Fehlermeldung angezeigt. Die Fehlermeldung hat in der Regel einen HTTP 500-Statuscode. Diese neue Grenze kann auf pro Anwendung konfiguriert werden. Anleitungen zur Konfiguration finden Sie in Abschnitt "Auflösung".

Problembeschreibung

ASP.NET-Anforderungen, die viele Formularschlüssel, Dateien oder eine hohe JSON-Nutzlast haben, empfangen eine Fehlerantwort vom Server. Das Anwendungsprotokoll auf dem Server enthält einen Warnungseintrag mit einer Quelle, bei der es sich um eine spezifische Version von ASP.NET handelt, und die Ereignis-ID "1309". Das Ereignisprotokoll enthält eine der folgenden Meldungen: 

Meldung 1:

Informationen zur Anwendung: Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne>Vertrauensstufe: Mittel Virtueller Anwendungspfad: <VDIR-Pfad>Anwendungspfad: <App-Pfad>Computername: <Computername>Prozessinformationen: Prozess-ID: 0001 Prozessname: w3wp.exe Kontoname: IIS-APPPOOL\DefaultAppPool Ausnahmeinformationen: Ausnahmetyp: HttpException Ausnahmemeldung: Ungültige URL-codierte Formulardaten. Bei System.Web.HttpRequest.FillInFormCollection()Bei System.Web.HttpRequest.get_Form()Bei System.Web.HttpRequest.get_HasForm()Bei System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)Bei System.Web.UI.Page.DeterminePostBackMode()Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Meldung 2:

Informationen zur Anwendung: Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne> Vertrauensstufe: Mittel Virtueller Anwendungspfad: <VDIR-Pfad> Anwendungspfad: <App-Pfad> Computername: <Computername>Prozessinformationen: Prozess-ID: 0001Prozessname: w3wp.exe Kontoname: IIS-APPPOOL\DefaultAppPool Ausnahmeinformationen: Ausnahmetyp: InvalidOperationException Ausnahmemeldung: Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig. Bei System.Web.HttpRequest.FillInFilesCollection()Bei System.Web.HttpRequest.get_Files()Bei FileUpload.Page_Load(Object sender, EventArgs e) Bei System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)Bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)Bei System.Web.UI.Control.OnLoad(EventArgs e)Bei System.Web.UI.Control.LoadRecursive()Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Meldung 3:

Informationen zur Anwendung:Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne> Vertrauensstufe: Mittel Virtueller Anwendungspfad: <VDIR-Pfad> Anwendungspfad: <App-Pfad>Computername: <Computername>Prozessinformationen: Prozess-ID: 0001Prozessname: w3wp.exe Kontoname: IIS-APPPOOL\DefaultAppPool Ausnahmeinformationen: Ausnahmetyp: InvalidOperationException Ausnahmemeldung: Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig. Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)Bei System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)Bei System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)Bei Failing.Page_Load(Object sender, EventArgs e) Bei System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)Bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)Bei System.Web.UI.Control.OnLoad(EventArgs e)Bei System.Web.UI.Control.LoadRecursive()Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Die IIS-Protokolldatei enthält einen Eintrag etwa folgenden Inhalts:

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

Ursache

Das Microsoft-Sicherheitsupdate, das im Sicherheitsbulletin MS11-100 beschrieben ist, ändert die standardmäßige Höchstanzahl der Formularschlüssel, Dateien und JSON-Mitglieder, die ASP.NET akzeptiert, in 1.000. Diese Änderung wurde vorgenommen, um das im Microsoft-Sicherheitsbulletin dokumentierte DoS-Sicherheitsrisiko (DoS = Denial of Service) zu adressieren.

Lösung

Anwendungen, die dieses Limit für Formularschlüssel oder Dateien errreichen, können die ASP.NET-AppSetting aspnet:MaxHttpCollectionKeys ändern, wie im Folgenden in einer Konfigurationsdatei einer ASP.NET-Anwendung dargestellt. Diese Einstellung befasst sich mit Fehlermeldung 1 und Fehlermeldung 2 im Abschnitt "Problembeschreibung".

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

Hinweis Wenn Sie ASP.NET 1.1 auf einem x86-basierten System verwenden, wird die Einstellung durch Hinzufügen eines DWORD-Werts zum folgenden Registrierungsschlüssel angepasst:

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

Wenn Sie ASP.NET 1.1 auf einem x64-basierten System verwenden, wird die Einstellung durch Hinzufügen eines DWORD-Werts zum folgenden Registrierungsschlüssel angepasst:

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

Anwendungen, die dieses Limit für JSON-Nutzlasten erreichen, können die ASP.NET-AppSetting aspnet:MaxJsonDeserializerMembers ändern, wie im Folgenden in einer Konfigurationsdatei einer ASP.NET-Anwendung dargestellt. Diese Einstellung befasst sich mit der Fehlermeldung 3 in Abschnitt "Problembeschreibung".

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

Hinweis Durch Erhöhen dieses Werts über die Standardeinstellung wird die Anfälligkeit des Servers für DoS-Angriffe erhöht, die in Sicherheitsbulletin MS11-100 beschrieben ist.

Informationsquellen

Weitere Informationen zum Sicherheitsbulletin MS11-100 finden Sie im folgenden TechNet-Artikel:

Microsoft-Sicherheitsbulletin MS11-100 – Kritisch Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2638420 MS11-100: Sicherheitsrisiko im .NET Framework kann eine Erhöhung von Berechtigungen ermöglichen: 29. Dezember 2011

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.