¿HTTP request smuggling?
¿Qué es HTTP Request Smuggling?
HTTP Request Smuggling (HRS) es una vulnerabilidad en la que un atacante interfiere con la forma en que un servidor web maneja las solicitudes HTTP, permitiendo que una solicitud maliciosa sea enviada a través de un servidor proxy o firewall sin ser detectada. Esta vulnerabilidad puede ser explotada para realizar diversos ataques, como la elusión de seguridad, la obtención de información sensible o la realización de ataques de denegación de servicio (DoS).
¿Cómo Funciona HTTP Request Smuggling?
HTTP Request Smuggling se aprovecha de las diferencias en la forma en que los servidores (por ejemplo, front-end proxies y back-end servers) manejan y procesan las solicitudes HTTP. La vulnerabilidad surge debido a la inconsistencia en el manejo de los encabezados HTTP, específicamente los encabezados Content-Length
y Transfer-Encoding
.
Pasos del ataque:
Desincronización de Solicitudes: El atacante envía una solicitud maliciosa diseñada para desincronizar cómo el servidor front-end y el servidor back-end interpretan la longitud de la solicitud. Esto generalmente se logra utilizando encabezados
Content-Length
yTransfer-Encoding
conflictivos.Inserción de una Solicitud Maliciosa: La solicitud maliciosa se inserta en el flujo de tráfico HTTP y se interpreta de manera diferente por los servidores. Mientras que el servidor front-end puede considerar que la solicitud está completa, el servidor back-end puede ver datos adicionales, interpretándolos como una nueva solicitud.
Ejecución de la Solicitud Maliciosa: La solicitud maliciosa llega al servidor back-end como una solicitud completamente nueva, permitiendo al atacante ejecutar acciones no autorizadas.
Ejemplo de HTTP Request Smuggling
Supongamos que un servidor front-end utiliza Content-Length
para determinar el final de una solicitud, mientras que el servidor back-end utiliza Transfer-Encoding
. Un atacante podría enviar la siguiente solicitud:
En este caso:
El servidor front-end puede interpretar la solicitud como un POST con un cuerpo vacío (debido al
Content-Length: 13
).El servidor back-end, utilizando
Transfer-Encoding: chunked
, puede verGET /malicious HTTP/1.1
como una nueva solicitud completa.
Impacto de HTTP Request Smuggling
El impacto de la explotación de HRS puede ser significativo y variado:
Elusión de Seguridad: Un atacante puede eludir controles de seguridad como firewalls y sistemas de detección de intrusos (IDS).
Robo de Información: Posibilidad de obtener información sensible de otras solicitudes HTTP.
Manipulación de Contenido: Alterar las respuestas del servidor para incluir contenido malicioso.
Denegación de Servicio (DoS): Causar desincronización en el manejo de solicitudes, resultando en la interrupción del servicio.
Mitigación de HTTP Request Smuggling
Para protegerse contra HRS, es crucial implementar varias medidas de seguridad:
Consistencia en el Manejo de Encabezados: Asegurarse de que todos los servidores en la cadena de procesamiento de solicitudes HTTP manejen los encabezados
Content-Length
yTransfer-Encoding
de manera consistente.Deshabilitar Transfer-Encoding cuando no sea Necesario: Si no se necesita, deshabilitar el uso de
Transfer-Encoding: chunked
en el servidor.Actualizar y Parchear Software: Mantener los servidores web y proxies actualizados con los últimos parches de seguridad.
Inspección de Solicitudes: Implementar inspección y validación rigurosas de las solicitudes HTTP para detectar y rechazar patrones maliciosos.
Última actualización
¿Te fue útil?