Contrabando de solicitudes HTTP
El contrabando de solicitudes HTTP (en inglés HTTP request smuggling) es una vulnerabilidad de seguridad en el protocolo HTTP que utiliza la incoherencia entre la interpretación Content-Length
y/o los Transfer-Encoding
encabezados entre las implementaciones del servidor HTTP en una cadena de servidor proxy HTTP. Fue documentado por primera vez en 2005 por Linhart et al.
Tipos
CL.TE
En este tipo de contrabando de solicitudes HTTP, el front-end procesa la solicitud usando el encabezado Content-Length mientras que el back-end procesa la solicitud usando el encabezado Transfer-Encoding.
TE.CL
En este tipo de contrabando de solicitudes HTTP, el front-end procesa la solicitud mediante el encabezado Transfer-Encoding mientras que el back-end procesa la solicitud mediante el encabezado Content-Length.
TE.TE
En este tipo de contrabando de solicitudes HTTP, tanto el front-end como el back-end procesan la solicitud utilizando el encabezado de codificación de transferencia, pero el encabezado se puede ofuscar de una manera (por ejemplo, mediante un formato de espacio en blanco no estándar o encabezados duplicados) que hace que uno de los servidores pero el otro no lo ignore.
Prevención
HTTP/2 no es vulnerable a los ataques de contrabando de solicitudes, ya que utiliza un método diferente para determinar la duración de una solicitud. Otro método para evitar el ataque es que el servidor frontend normalice las solicitudes HTTP antes de pasarlas al backend, asegurándose de que se interpreten de la misma manera.
Contenido relacionado
Protocolo trivial de transferencia de archivos
Partición de espacio binario
Objeto inmutable