Las siglas de este ataque se corresponden con “Cross Site Request Forgery“, lo que más o menos en español vendría a significar algo así como “Falsificación de Peticiones en Sitios Cruzados”. Otra cosa más que añadir a la lista de las cuales no sabía el nombre, pero si lo que era, como últimamente viene siendo habitual.
Está vulnerabilidad permite realizar peticiones legítimas una aplicación vulnerable desde otra no legítima, utilizando los auténticos credenciales del usuario. No os preocupéis si no habéis entendido nada con la definición, porque con un ejemplo estoy seguro de que lo veremos claramente.
Pongamos como situación un cliente que está logado en la página de su banco (sitio A) en una de las pestañas de su navegador, y en otra de ellas accede al sitio que contiene el código malicioso (sitio B).
En la página A, la del banco, la solicitud de una transferencia por parte de un cliente se realiza de la siguiente manera:
http://www.bank.org/transfer.php?amount=2000&dest=0002714345
La página B envía su contenido, más una imagen con el siguiente código:
<img src=” http://www.bank.org/transfer.php?amount=2000&dest=0123456789″ />
Cuando en navegador de la victima intentase cargar este enlace, realizaría una petición al banco transfiriendo 2000€ a la cuenta destino. al estar el cliente logado en el banco, esta petición se realizaría con los credenciales correctos y se llevaría a cabo sin ningún problema. Como supongo que habréis deducido ya, para que este ataque funcione, es necesario que la víctima esté autenticada en el sitio A.
Para evitar este tipo de ataques, se emplean testigos aleatorios que son enviados a los servidores junto con las peticiones realizadas de forma que estos validen que el valor enviado coincide con el valor asignado a ese formulario. Mediante este mecanismo, aunque se acceda al sitio malicioso, y se realice la petición con el código malicioso, la ejecución de la petición fallaría.
Como siempre espero que os sea de utilidad. Si tenéis alguna duda o comentario, animaros a dejarlo. Nos vemos.