¿Cómo prevenir un ataque de reparación de sesión MITM sobre HTTP simple a la primera solicitud?

5

Los sitios web tienen varios métodos implementados para indicar al navegador que siempre use HTTPS: encabezado HSTS, redirección del servidor a HTTPS, política de CSP. Sin embargo, la primera vez que un usuario visita el sitio puede estar sobre HTTP HTTP. Solo después de que el navegador sepa que el sitio debería estar sobre TLS, siempre lo utilizará.

Pero, ¿qué sucede si un ataque tiene acceso al tráfico durante la primera visita y actúa como un hombre en medio?

Por ejemplo, el atacante podría realizar un ataque de fijación de sesión. El atacante visita el sitio y se le asigna una cookie con un ID de sesión. Cuando el usuario visita el sitio a través de HTTP, el atacante responde en nombre del servidor y asigna su cookie al usuario. Entonces el atacante deja pasar todo el tráfico hacia adelante. El usuario realiza solicitudes con el ID de sesión del atacante, regala información, etc. Ahora el atacante puede realizar solicitudes con ese ID y obtener la información del usuario.

¿Qué se puede hacer para detener este tipo de ataque?

    
pregunta Muhammad Umer 12.03.2018 - 22:09
fuente

1 respuesta

1

Suponiendo que siempre redirecciona al usuario de HTTP a HTTPS, puede colocar su identificador de sesión en una cookie segura de solo HTTP que el servidor nunca envía a través de HTTP.

En realidad, en mi caso, el HTTP a HTTPS ocurre en Apache, por lo que el código de mi servidor no puede enviar la cookie a un usuario solo con HTTP.

Al menos, esto funcionará en el escenario que describiste en tu pregunta. Sin embargo, nunca he oído hablar de un ataque MITM que se detenga en la primera solicitud. Las solicitudes HTTPS también pueden ser procesadas por el MITM para que en ese momento el pirata informático obtenga la cookie segura de todos modos.

Como lo menciona StackzOfZtuff, puede forzar que las solicitudes solo se realicen en HTTPS registrando su sitio con HSTS agregando este encabezado HTTP:

 Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Por supuesto, eso significa que debe asegurarse de tener un certificado válido en todo momento o de que su sitio no sea accesible por un tiempo. Es posible que tampoco desee incluir subdominios.

Con HSTS, la primera solicitud HTTP nunca ocurre (al menos de los navegadores que entienden la lista de HSTS. Pero cada vez más navegadores están probando primero con HTTPS en lugar de HTTP cuando no se especificó el protocolo).

    
respondido por el Alexis Wilke 05.08.2018 - 01:23
fuente

Lea otras preguntas en las etiquetas