Cross-site request forgery

David Rivera

Santiago Alvarez

Definición de la vulnerabilidad

Conocida como One-click attack o Session riding abreviada a CSRF (pronunciado sea-surf) o XSRF.

Ataque que afecta las aplicaciones web con una estructura predecible para la invocación (llamado de acciones) y que use cookies, autenticacion por browser o certificados del lado del cliente

Definición (cont...)

Vulnerabilidad conocida desde el 2001 por Peter Watkins [1].

XSS explota la confianza de un usuario con cierto sitio

CSRF explota la confianza de un sitio con cierto usuario.

¿Qué es?

Es un exploit malicioso para los sitios web.

Un usuario envia peticiones maliciosas con el fin de cambiar u obtener información aprovechandose de la confiabilidad que tiene el sitio con el usuario en cuestion.

¿Cómo ataca?

El usuario se debe autenticar al sitio objetivo

 

El atacante puede incluir un link o script en un sitio alterno que la victima visite.

 

Cuando la victima visite el sitio alterno, el script malicioso se ejecutará sin que la victima se percate.

¿Cómo ataca? (cont..)

La mayoria de sitios almacenan información sensible en los navegadores:

  • Cookies de sesión
  • Credenciales de autenticacion
  • Direccion IP
  • Credenciales de dominio

Si el usuario actual esta autenticado, el sitio objetivo no tendrá forma de distinguir la legitimidad de la peticion del usuario

¿Cómo prevenirla?

(3 estrategias)

Synchronizer Token Pattern

Técnica en la cual un token (secreto y único para cada peticion) es embebido en la aplicación y verificado en el lado del servidor.

Asegurar: Impredecible y único.

<input type="hidden" name="csrfmiddlewaretoken" value="KbyUmhTLMpYj7CD2di7JKP1P3qmLlkPt">

Autenticación adicional y CAPTCHA

Repetir la autnticación luego de operaciones de seguridad crítica, como transferencias de dinero o cambio de password.

Puede ser un login (username & password) o un nivel mas alto como la autenticación de dos factores [2].

Cookie-to-Header Token

Usar una técnica anti-CSRF para las peticiones Javascript que depende de same-origin policy.

  • Setear una cookie que contenga un token aleatorio que permanece por toda la sesion del usuario.
     
  • Cada operación en el cliente envia el token en la cabecera de la petición HTTP.
     
  • El servidor valida la presencia e integridad del token.

Ejemplo

Con CSRF


<!-- EXPLOIT -->
<img src="http://localhost:8000/delete/2" alt="Esto es un exploit">

Sin CSRF

Referencias

[1] Burns, J. Cross Site Request Forgery: An introduction to a common web application weakness. 2005

 

[2] Cross-site request forgery. (2014, August 5). In Wikipedia, The Free Encyclopedia. Retrieved 18:14, August 17, 2014, from http://en.wikipedia.org/w/index.php?title=Cross-site_request_forgery&oldid=620006496

 

Webgrafia

Cross-site request forgery

By Dave Rivera

Cross-site request forgery

  • 1,633