¿Puedes robar la cookie de sesión con el ataque BREACH?

4

La mayoría de las discusiones sobre la vulnerabilidad BREACH se refieren al robo de tokens CSRF basados en sesiones. Pero si puede robar un token basado en sesión, ¿podría también robar el token de sesión? Obviamente, hay algunos puntos más finos del ataque BREACH que no entiendo :)

Estoy específicamente interesado en Django. En todas las solicitudes para las que el navegador envía una cookie csrftoken , el navegador también envía una cookie sessionid .

Editar :

Si mi nueva comprensión es correcta, entonces la respuesta es trivialmente NO. El BREACH paper dice:

  

Para ser vulnerable a este canal lateral, una aplicación web debe:   (1) Servirse desde un servidor que usa compresión a nivel HTTP, Y   (2) Refleja la entrada del usuario en los cuerpos de respuesta HTTP, Y   (3) Refleja un secreto (como un token CSRF) en los cuerpos de respuesta HTTP.

¿Se refieren (2) y (3) a la misma cosa? Es decir, ¿el ataque solo es posible si la entrada del usuario repetida en el cuerpo de la respuesta HTTP es LA MISMA COSA como el secreto que está intentando robar?

Si esto es correcto, entonces tiene sentido.

Puede robar un token CSRF, porque el usuario lo ingresa (generalmente a través de un formulario POST param o cookie) Y puede repetirse nuevamente en la respuesta (ya sea como entrada oculta de un formulario o como una cookie ), Y es el secreto que estás intentando robar.

No puede robar un token de sesión, porque el usuario no puede alterar la salida basándose en esa entrada. Quiero decir, seguro, el usuario puede enviar una cookie de sesión modificada, pero el servidor (con suerte) nunca repetirá el token de sesión no válido en la respuesta.

    
pregunta simmbot 27.02.2015 - 23:26
fuente

1 respuesta

2

Así que BREACH es un ataque específicamente contra cuerpos de respuesta, no encabezados. Dado que las cookies se envían como encabezados, no son susceptibles a la técnica descrita por BREACH, pero han sido vulnerables a otros ataques de compresión de canal lateral como CRIME.

Lo que quieren decir con:

  

(2) Refleja la entrada del usuario en los cuerpos de respuesta HTTP, Y (3) Refleja un secreto (como un token CSRF) en los cuerpos de respuesta HTTP.

Es que (2) el atacante debe poder enviar información del usuario que él controla que luego se agrega al cuerpo de la respuesta de manera tal que pueda enviar conjeturas sobre cuál es el secreto, y (3) la aplicación También debe contener el secreto que está adivinando en el cuerpo de respuesta.

Lo que esto hace es crear un oráculo. Debido a que es un ataque a la compresión, está enviando suposiciones para la primera parte del secreto, y cuando su suposición es correcta, hará que el cuerpo de respuesta sea un poco más corto, porque la duplicación entre su suposición y el verdadero secreto será eliminada por el Algoritmo de comunicación. Así que, en términos sencillos, sigue adivinando un personaje a la vez hasta que obtiene el siguiente personaje correcto, y el cuerpo de respuesta se vuelve un byte más corto. Luego, pasa al siguiente personaje y repite el proceso hasta que conoce el secreto completo.

    
respondido por el Xander 28.02.2015 - 00:16
fuente

Lea otras preguntas en las etiquetas