Este sitio Web utiliza cookies propias y de terceros para realizar el análisis de navegación de los usuarios. Si continua navegando acepta el uso de cookies. Este sitio web es propiedad de Sidertia Solutions S.L., empresa responsable de su mantenimiento. Haga clic aquí para obtener más información acerca de nuestra política de Cookies.
Aceptar
es-ESen-US



BLOG DE SIDERTIA

ASPNET Core Codificacion Unicode Non-Char DoS

Escrito por David Fernández - 18 May 2017

Durante un test de penetración de una aplicación web se descubrió un fallo en la función TextEncoder.EncodeCore del paquete System.Text.Encodings.Web de ASP.NET Core Mvc que podría ser explotado para causar una denegación de servicio en una aplicación web.

Versiones Afectadas

ASP.NET Mvc < 1.0.3

ASP.NET Mvc < 1.1.2

Fix del vendedor

Microsoft actualizó su componente ASP.NET Core Mvc a las versions 1.0.4 y 1.1.3 para corregir la vulnerabilidad.

Referencias

Microsoft asignó el CVE-2017-0247 a la vulnerabilidad de ASP.NET Core y publicó su aviso de seguridad 4021279.

Descripción

La función TextEncoder.EncodeCore incorrectamente calcula la longitud de caracteres de 4 bytes pertenecientes al rango conocido como Unicode Non-Character al intentar codificar el carácter, lanzando una excepción y parando el procesamiento del resto de caracteres en la cadena. El código vulnerable es similar al siguiente (extraído del repositorio corefx):


Codigo ASP.NET

Esta función, además de ser invocada por otras funciones, es llamada cada que vez que el ViewBag se renderiza o cualquiera de los helpers HTML (HTML.DisplayFor, HTML.EditFor, etc.) es utilizado en una vista. Como los caracteres previos en la cadena a codificar ya han sido enviados al cliente, el resultado es que el servidor enviará una respuesta incompleta (una respuesta HTTP con un contenido más corto que el anunciado por Content-Length en el caso de Kestrel o una respuesta del tipo chunked-encoding sin el chunk final en el caso de IIS.

Impacto

El resultado del ataque es que ningún navegador será capaz de renderizar la página que intentó codificar el carácter en cuestión. En el caso de contenido persistido a una base de datos (aplicación CRUD de backoffice, comentarios en un blog, etc.), causará que ningún navegador sea capaz de renderizar el contenido, causando una denegación de servicio efectiva en cualquier página que intenté codificar el carácter del tipo Unicode non-character. El carácter deberá ser eliminado de la base de datos para volver a recuperar el comportamiento normal de la aplicación.

Prueba de concepto

Enviar un carácter Unicode non-character como FE8FBFBE a una acción de un controlador que persista el contenido en la base de datos y visitar cualquier página donde el carácter aparezca:


Prueba Concepto ASP.NET

El resultado de visitar cualquier página donde el carácter se intente codificar por una vista Mvc será el siguiente:

Resultado ASP.NET



NUESTRO PORTAFOLIO DE SERVICIOS

  • Consultoría Consultoría

    Servicios de consultoría especializada de la mano de profesionales altamente cualificados.

  • Formación Formación

    Reciba formación experta de calidad ajustada a sus necesidades.

  • Seguridad Seguridad TIC

    Sidertia Solutions le ayuda a implementar y mantener su modelo de seguridad.

  • Desarrollo Desarrollo

    Soluciones de desarrollo seguro para su empresa.


  • Microsoft Silver Partner
  • Citrix Silver Partner
  • Dell Partner Registered