Si applica a
.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

Sommario

L'aggiornamento della sicurezza Microsoft MS11-100 limita il numero massimo di chiavi del modulo, file e membri JSON a 1000 in una richiesta HTTP. A causa di questa modifica, le applicazioni ASP.NET rifiutano le richieste con più di 1000 elementi di questo tipo. Verranno rifiutati i client HTTP che effettuano questi tipi di richieste e verrà visualizzato un messaggio di errore nel browser Web. Il messaggio di errore conterrà un codice di stato 500 HTTP. È possibile che questo nuovo limite venga configurato in base all'applicazione. Per istruzioni relative alla configurazione, vedere la sezione "Risoluzione".

Sintomi

Per le richieste ASP.NET con molte chiavi del modulo, file oppure payload JSON viene visualizzata una risposta di errore dal server. Il registro applicazioni sul server dispone di un Avviso con un'Origine che rappresenta una versione specifica di ASP.NET e un ID evento di 1309. Il registro eventi contiene uno dei seguenti messaggi:

Messaggio 1:

Informazioni dell'applicazione: Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain>Livello di attendibilità: Medio Percorso virtuale dell'applicazione: <Percorso VDIR>Percorso dell'applicazione: <Percorso app>Nome computer: <Nome computer>Informazioni sul processo: ID processo: 0001 Nome processo: w3wp.exe Nome account: IIS APPPOOL\DefaultAppPool Informazioni sull'eccezione: Tipo di eccezione: HttpException Messaggio eccezione: I dati del modulo con codifica URL non sono validi. in System.Web.HttpRequest.FillInFormCollection()in System.Web.HttpRequest.get_Form()in System.Web.HttpRequest.get_HasForm()in System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)in System.Web.UI.Page.DeterminePostBackMode()in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Messaggio 2:

Informazioni dell'applicazione: Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain> Livello di attendibilità: Medio Percorso virtuale dell'applicazione: <Percorso VDIR> Percorso dell'applicazione: <Percorso app> Nome computer: <Nome computer>Informazioni sul processo: ID processo: 0001Nome processo: w3wp.exe Nome account: IIS APPPOOL\DefaultAppPool Informazioni sull'eccezione: Tipo di eccezione: InvalidOperationException Messaggio eccezione: Operazione non valida a causa dello stato corrente dell'oggetto. in System.Web.HttpRequest.FillInFilesCollection()in System.Web.HttpRequest.get_Files()in FileUpload.Page_Load(Object sender, EventArgs e) in System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)in System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)in System.Web.UI.Control.OnLoad(EventArgs e)in System.Web.UI.Control.LoadRecursive()in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Messaggio 3:

Informazioni dell'applicazione:Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain> Livello di attendibilità: Medio Percorso virtuale dell'applicazione: <Percorso VDIR> Percorso dell'applicazione: <Percorso app>Nome computer: <Nome computer>Informazioni sul processo: ID processo: 0001Nome processo: w3wp.exe Nome account: IIS APPPOOL\DefaultAppPool Informazioni sull'eccezione: Tipo di eccezione: InvalidOperationException Messaggio eccezione: Operazione non valida a causa dello stato corrente dell'oggetto. in System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)in System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)in System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)in System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)in System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)in Failing.Page_Load(Object sender, EventArgs e) in System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)in System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)in System.Web.UI.Control.OnLoad(EventArgs e)in System.Web.UI.Control.LoadRecursive()in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Il file di registro IIS visualizza una voce simile alla seguente:

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

Cause

L'aggiornamento della sicurezza Microsoft relativo al Bollettino Microsoft sulla sicurezza MS11-100 modifica il numero massimo predefinito di chiavi del modulo, file e membri JSON che ASP.NET accetterà in una richiesta a 1.000. Questa modifica è stata introdotta per risolvere il problema di vulnerabilità Denial of Service documentato nel Bollettino Microsoft sulla sicurezza MS11-100.

Risoluzione

Le applicazioni che raggiungono questo limite per le chiavi del modulo o per i file possono modificare l'impostazione dell'applicazione (appSetting) ASP.NET aspnet:MaxHttpCollectionKeys, come mostrato in un file di configurazione dell'applicazione ASP.NET. Questa impostazione risolve il messaggio di errore 1 e 2 dalla sezione "Sintomi".

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

Nota Se si utilizza ASP.NET 1.1 in un sistema basato su x86, l'impostazione viene modificata aggiungendo un valore DWORD alla seguente chiave del Registro di sistema:

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

Se si utilizza ASP.NET 1.1 in un sistema basato su x64, l'impostazione viene modificata aggiungendo un valore DWORD alla seguente chiave del Registro di sistema:

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

Le applicazioni che riscontrano questo limite per i payload JSON possono modificare l'impostazione dell'applicazione (appSetting) ASP.NET aspnet:MaxJsonDeserializerMembers, come mostrato in un file di configurazione dell'applicazione ASP.NET. Questa impostazione risolve il messaggio di errore 3 dalla sezione "Sintomi".

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

Nota L'aumento di questo valore al di sopra dell'impostazione predefinita, aumenta la sensibilità del server relativa al problema di vulnerabilità Denial of Service illustrato nel Bollettino Microsoft sulla sicurezza MS11-100.

Riferimenti

Per ulteriori informazioni sul Bollettino Microsoft sulla sicurezza MS11-100, vedere il seguente articolo TechNet:

Bollettino Microsoft sulla sicurezza MS11-100 - Critico Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:

2638420 MS11-100: Possibile elevazione dei privilegi a causa di vulnerabilità in .NET Framework: 29 dicembre 2011

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.