Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

La actualización de seguridad MS11-100 de Microsoft limita el número máximo de miembros JSON, archivos y claves de formulario a 1000 en una solicitud HTTP. Debido a este cambio, las aplicaciones ASP.NET rechazan las solicitudes que contengan una cantidad de estos elementos superior a 1000. Los clientes HTTP que realicen estos tipos de solicitudes serán denegados y aparecerá un mensaje de error en el explorador web. El mensaje de error tendrá normalmente un código de estado HTTP 500. Este nuevo límite puede configurarse en función de las aplicaciones. Consulte la sección "Resolución" para obtener instrucciones de configuración.


Resumen

Las solicitudes ASP.NET que contienen mucha carga JSON, archivos o claves de formulario reciben una respuesta de error del servidor. El registro de Aplicación del servidor tiene una entrada de Advertencia con un Origen que es una versión específica de ASP.NET y un id. de evento de 1309. El registro de eventos contiene uno de los mensajes siguientes:


Mensaje 1:

Información de la aplicación:
Dominio de aplicación: /LM/W3SVC/1/ROOT/<Dominio de aplicación>
Nivel de confianza: Medio
Ruta de acceso virtual de la aplicación: <Ruta de acceso de VDIR>
Ruta de acceso de la aplicación: <Ruta de acceso de la aplicación>
Nombre del equipo: <Nombre del equipo>
Información de proceso:
Id. de proceso: 0001
Nombre del proceso: w3wp.exe
Nombre de cuenta: IIS APPPOOL\DefaultAppPool

Información de excepción:
Tipo de excepción: HttpException
Mensaje de excepción: Los datos de formulario con codificación URL no son válidos.
en System.Web.HttpRequest.FillInFormCollection()
en System.Web.HttpRequest.get_Form()
en System.Web.HttpRequest.get_HasForm()
en System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
en System.Web.UI.Page.DeterminePostBackMode()
en System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


Mensaje 2:

Información de la aplicación:
Dominio de aplicación: /LM/W3SVC/1/ROOT/<Dominio de aplicación>
Nivel de confianza: medio
Ruta de acceso virtual de la aplicación: <ruta de acceso de VDIR>
Ruta de acceso de la aplicación: <ruta de acceso de la aplicación>
Nombre del equipo: <nombre del equipo>

Información del proceso:
Id. del proceso: 0001
Nombre del proceso: w3wp.exe
Nombre de cuenta: IIS APPPOOL\DefaultAppPool

Información de excepción:
Tipo de excepción: InvalidOperationException
Mensaje de excepción: La operación no es válida debido al estado actual del objeto.
en System.Web.HttpRequest.FillInFilesCollection()
en System.Web.HttpRequest.get_Files()
en FileUpload.Page_Load(Object sender, EventArgs e)
en System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
en System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
en System.Web.UI.Control.OnLoad(EventArgs e)
en System.Web.UI.Control.LoadRecursive()
en System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint


Mensaje 3:

Información de la aplicación:
Dominio de aplicación: /LM/W3SVC/1/ROOT/<Dominio de aplicación>
Nivel de confianza: medio
Ruta de acceso virtual de la aplicación: <ruta de acceso de VDIR>
Ruta de acceso de la aplicación: <ruta de acceso de la aplicación>
Nombre del equipo: <nombre del equipo>

Información del proceso:
Id. del proceso: 0001
Nombre del proceso: w3wp.exe
Nombre de cuenta: IIS APPPOOL\DefaultAppPool

Información de excepción:
Tipo de excepción: InvalidOperationException
Mensaje de excepción: la operación no es válida debido al estado actual del objeto.
en System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
en System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
en System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
en System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
en System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
en Failing.Page_Load(Object sender, EventArgs e)
en System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
en System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
en System.Web.UI.Control.OnLoad(EventArgs e)
en System.Web.UI.Control.LoadRecursive()
en System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)



El archivo de registro de IIS muestra una entrada similar a la siguiente:

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




Síntomas

La actualización de seguridad de Microsoft a la que se refiere el boletín de seguridad MS11-100 cambia el número máximo predeterminado de miembros JSON, archivos y claves de formulario que ASP.NET aceptará en una solicitud a 1000. Se ha realizado este cambio para solucionar la vulnerabilidad de denegación de servicio que documenta el boletín de seguridad MS11-100 de Microsoft.


Causa

Las aplicaciones que alcanzan este límite de archivos o claves de formulario pueden modificar el appSetting de ASP.NET aspnet:MaxHttpCollectionKeys, como se muestra a continuación en un archivo de configuración de la aplicación ASP.NET. Esta configuración soluciona el mensaje de error 1 y el mensaje de error 2 de la sección "Síntomas".

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



Nota: si utiliza ASP.NET 1.1 en un sistema basado en x86, la configuración se cambia agregando un valor DWORD a la siguiente clave del Registro:

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

Si utiliza ASP.NET 1.1 en un sistema basado en x64, la configuración se cambia agregando un valor DWORD a la siguiente clave del Registro:

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




Las aplicaciones que alcanzan este límite con las cargas JSON pueden modificar el appSetting de ASP.NET aspnet:MaxJsonDeserializerMembers, como se muestra a continuación en un archivo de configuración de la aplicación ASP.NET. Esta configuración soluciona el mensaje de error 3 de la sección "Síntomas".

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




Nota: si aumenta este valor en la configuración predeterminada, aumenta la probabilidad de que su servidor sufra la vulnerabilidad de denegación de servicio que se trata en el boletín de seguridad MS11-100.


Solución

Para obtener más información acerca del boletín de seguridad MS11-100, consulte el siguiente artículo de TechNet:

Microsoft Security Bulletin MS11-100 - crítica Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2638420 MS11-100: una vulnerabildad en .NET Framework podría permitir la elevación de privilegios: 29 de diciembre de 2011

Referencias

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×