Mastodon Mastodon Mastodon Mastodon

CSRF

Actualizado: · CyberSecureFox Editorial Team

CSRF (falsificación de petición en sitios cruzados) es un ataque que hace que el navegador de un usuario con sesión iniciada envíe sin saberlo una petición no deseada a una web, que la ejecuta con los privilegios de ese usuario.

Cómo funciona CSRF

El navegador adjunta automáticamente las cookies a las peticiones dirigidas a una web, sin importar qué página las haya originado. Supongamos que ha iniciado sesión en su banca online o en el panel de su router y abre una página maliciosa. Esa página puede contener un formulario o una imagen oculta que envía a la otra web una petición como «cambiar el correo», «hacer una transferencia» o «cambiar el servidor DNS». El navegador añade su cookie de sesión y, si la web no comprueba de dónde viene la petición, ejecuta la acción como si usted hubiera pulsado el botón.

La debilidad está catalogada como CWE-352. A diferencia del cross-site scripting, el atacante no puede leer la respuesta: su objetivo es provocar una acción que cambie el estado. Algunos kits de exploits han usado CSRF contra routers domésticos para cambiar en silencio su configuración DNS y desviar a los usuarios a webs de phishing.

Por qué es importante

Con CSRF se pueden cambiar el correo y la contraseña de una cuenta (y apoderarse de ella), crear administradores en un CMS, modificar la configuración de dispositivos o hacer compras. Combinado con otros fallos, CSRF es un paso hacia el secuestro de sesión o la ejecución de código. Las víctimas frecuentes son los paneles de administración de routers, NAS y plugins de WordPress.

Cómo prevenirlo

  • Usar tokens anti-CSRF: un valor aleatorio ligado a la sesión que debe acompañar a cada petición que cambie el estado.
  • Marcar las cookies de sesión con el atributo SameSite (Lax o Strict); los principales navegadores ya usan Lax por defecto.
  • Comprobar las cabeceras Origin o Referer en las peticiones sensibles.
  • Pedir de nuevo la contraseña para acciones críticas y no cambiar nunca el estado con peticiones GET.

Como la inyección SQL y SSRF, CSRF es un fallo web clásico que la configuración por defecto de los frameworks modernos evita en gran medida, siempre que los desarrolladores no la desactiven.

Sinónimos:
falsificación de petición en sitios cruzados, falsificación de solicitudes entre sitios, cross-site request forgery, XSRF