Partición de respuesta HTTP
La división, separación o partición de la respuesta HTTP (en inglés HTTP response splitting) es una forma de vulnerabilidad de la aplicación web, que resulta de la falla de la aplicación o su entorno para desinfectar adecuadamente los valores de entrada. Se puede utilizar para realizar ataques de secuencias de comandos entre sitios, desfiguración entre usuarios, envenenamiento de caché web y exploits similares.
El ataque consiste en hacer que el servidor imprima una secuencia de retorno de carro (CR, ASCII 0x0D) salto de línea (LF, ASCII 0x0A) seguido del contenido proporcionado por el atacante en la sección de encabezado de su respuesta, generalmente incluyéndolos en los campos de entrada enviados a la aplicación. Según el estándar HTTP (RFC 2616), los encabezados están separados por un CRLF y los encabezados de la respuesta están separados de su cuerpo por dos. Por lo tanto, si no se eliminan los CR y los LF, el atacante puede establecer encabezados arbitrarios, tomar el control del cuerpo o dividir la respuesta en dos o más respuestas separadas, de ahí el nombre.
Prevención
La solución genérica es codificar cadenas de URL antes de incluirlas en encabezados HTTP como Location o Set-Cookie.
Los ejemplos típicos de saneamiento incluyen la conversión a enteros o el reemplazo agresivo de expresiones regulares. Aunque la división de respuestas no es específica de PHP, el intérprete de PHP contiene protección contra el ataque desde la versión 4.4.2 y 5.1.2.
Contenido relacionado
Marca de orden de bytes
Base de datos de Berkeley
Abrir primero la ruta más corta