2008-10-22 8 views
9

Con respecto a los ataques de falsificación de solicitudes entre sitios (CSRF), si las cookies son el método de autenticación más utilizado, ¿por qué los navegadores web permiten enviar cookies de algún dominio (y ese dominio) desde una página generada desde otro dominio?¿No es CSRF un problema de seguridad del navegador?

¿No se puede prevenir CSRF fácilmente en el navegador al no permitir este tipo de comportamiento?

Hasta donde yo sé, este tipo de control de seguridad no se implementa en los navegadores web, pero no entiendo por qué. ¿Obtuve algo mal?

Sobre CSRF:

Editar: Creo que las cookies no deben ser enviados en http POST en el caso anterior. Ese es el comportamiento del navegador que me sorprende.

+0

El navegador podría detectar que usted está enviando forma de AA en una página de un dominio a una página en otro dominio, y se niega a enviar las cookies en ese caso, o al menos lo advierte antes de hacerlo. En el caso de las solicitudes POST, no creo que sea una mala idea. –

Respuesta

8

¿Por qué el navegador no va a enviar cookies?

El sitio A (http://www.sitea.com) establece una cookie para el usuario.

El usuario navega al sitio B (http://www.siteb.com). El sitio B presenta integración con el sitio A: haga clic aquí para hacer algo en el sitio A! Los usuarios hacen clic en "aquí".

Por lo que el navegador puede decir, el usuario toma una decisión consciente de realizar una solicitud al sitio A, por lo que lo maneja de la misma manera que cualquier solicitud al sitio A, y eso incluye el envío de cookies del sitio A en la solicitud al sitio A.


Editar: Creo que el problema principal aquí es que le parece que es una distinción entre las cookies de autenticación y otras cookies. Las cookies se pueden utilizar para almacenar cualquier cosa: preferencias del usuario, su último puntaje alto o un token de sesión. El navegador no tiene idea para qué se utiliza cada cookie. I quiero que mis cookies estén siempre disponibles para el sitio que las configuró, y quiero que el sitio se asegure de que toma las precauciones necesarias.

O estás diciendo que si se busca yahoo para "Gmail" y haga clic en el enlace que te lleva a http://mail.google.com, no debe estar conectado, incluso si dicho Gmail para mantenerlo conectado en , porque hiciste clic en el enlace de otro sitio?

+0

> El sitio B presenta integración con el sitio A: haga clic aquí para hacer algo en el sitio A! Los usuarios hacen clic en "aquí". --- Sí, pero no acciones que requieren su autenticación en el sitio A. Tales acciones deberían ser rechazadas.Este tipo de 'integración' se ve inmediatamente como un gran problema de seguridad. –

+0

Entiendo que no hay distinción entre las cookies de autenticación y otras cookies. Gracias por un buen ejemplo sobre gmail, eso casi responde mi pregunta. Pero sigo pensando que las cookies de autenticación no deberían enviarse con POST en el caso descrito. –

+0

De esta manera podría ver que ha iniciado sesión en una página en otro dominio, pero no podría hacer ninguna acción desde otro dominio. –

4

No es que un navegador esté enviando la cookie desde o hacia un dominio externo, es el hecho de que está autenticado y el sitio no valida la fuente de la solicitud, por lo que lo trata como si la solicitud vino del sitio.

En cuanto a si un navegador no debería permitir eso ... ¿qué pasa con las muchas situaciones en que son deseables las solicitudes entre sitios?

Editar: para que quede claro, su cookie no se envía a través de dominios.

+0

> ¿qué pasa con las muchas situaciones en que son deseables las solicitudes entre sitios? ¿Quiere decir dónde sus acciones en una página de un dominio causan acciones en otro dominio? Eso debería permitirse, pero ¿por qué enviar las cookies (que contienen autenticación y capacidades)? ¡Estoy sorprendido! –

+0

¿Cuál es esa "situación deseable" para las secuencias de comandos entre sitios que requiere las cookies mencionadas? –

+0

Las cookies no se envían. – eyelidlessness

2

No sé si hay mucho que el navegador puede hacer en esa situación, ya que el objetivo de un ataque XSRF es dirigir el navegador a otro punto de la aplicación que podría funcionar mal. Lamentablemente, el navegador no tiene idea de si la solicitud a la que se le está enviando es maliciosa o no. Por ejemplo, dado el ejemplo clásico de XSRF:

<img src="http://domain.com/do_something_bad" /> 

no es evidente para el navegador que algo malo está pasando. Después de todo, ¿cómo es saber la diferencia entre eso y esto ?:

<img src="http://domain.com/show_picture_if_authenticated" /> 
+1

No hay diferencia; ambos deben fallar (porque el navegador no debe enviar cookies de autenticación). ¿Por qué debería un sitio por defecto mostrar su estado de inicio de sesión de OTRO sitio? –

+0

¿Por qué no debería? Solo le muestra la información. –

+0

Lo siento, me dejé llevar. Lo que esperaría de un navegador web es no enviar cookies con POST en el caso descrito. De esta forma, no se puede tomar ACCIÓN por página desde otro dominio. –

2

Muchos de los protocolos antiguos tienen grandes agujeros de seguridad: piense en el recientemente descubierto DNS vulnerabilities. Como básicamente cualquier seguridad de red, es la responsabilidad de los puntos finales; Sí, apesta que tengamos que arreglar esto nosotros mismos, pero es mucho más difícil de solucionar a nivel del navegador. Hay algunos más obvios (< img src = "logoff.php" > se ve muy sospechoso, ¿verdad?), Pero siempre habrá casos extremos. (Tal vez es una secuencia de comandos GD en un archivo PHP, después de todo.) ¿Qué pasa con las consultas AJAX? Y así sucesivamente ...

1

Las cookies de un sitio nunca se envían a otro sitio. De hecho, para implementar un ataque CSRF exitoso, el atacante no necesita tener acceso a estas cookies.

Básicamente, un atacante engaña al usuario, que ya ha iniciado sesión en el sitio web de destino, para que haga clic en un enlace o cargue una imagen que hará algo en el sitio de destino con las credenciales de ese usuario.

Es decir, el usuario realiza la acción y el atacante ha engañado al usuario para que lo haga.

Cuestiones relacionadas