Ir al contenido

Separación de respuesta HTTP

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 16:54 3 mar 2020 por Madamebiblio (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

La Separación de respuesta HTTP[1]​ es una vulnerabilidad de una aplicación web que resulta cuando fracasa la limpieza de valores de entrada por parte de la aplicación o de su ambiente. Puede usarse para realizar ataques cross-site scripting, cross-user defacement, envenanimiento del cache web y otros exploits.

El ataque consiste en lograr que el servidor imprima una secuencia retorno de carro (CR, ASCII 0x0D) y nueva línea (LF, ASCII 0x0A) seguida de contenido suministrado por el atacante en la cabecera de su respuesta, típicamente incluyéndolos en los campos de entrada enviados a la aplicación. Por el estándar HTTP (RFC 2616), dos encabezados se separan por un CRLF y los encabezados se separan del cuerpo de la respuesta mediante dos CRLFs. Por esto, si se fracasa en eliminar los CRs y LFs se permitirá al atacante establecer encabezados arbitrarios, tomar el control del cuerpo o de la terminación de la respuesta en dos o más repuestas separadas --a esto se debe el nombre de la vulnerabilidad.

Prevención

La solución genérica es transformar cada cadena a Código por ciento antes de incluirla en Cabeceras HTTP tales como Location o Set-Cookie.

Los ejemplo típicos de limpieza incluyen conversión de tipos a entero o remplazos agresivos con expresiones regulares. Aunque la separación de respuesta HTTP no es específica de PHP, el interprete de PHP contiene protecciones contra el ataque desde la versión 4.4.2 y 5.1.2.[2]

Referencias

  1. en:HTTP response splitting
  2. «PHP: PHP 5.1.2. Release Announcement». The PHP Group. Consultado el 13 de noviembre de 2014. 

Enlaces externos