Blog de ciberseguridad ciberseguridadtips
  • Home
  • Glosario
  • Educación
  • Software
    • VPN
    • Antivirus
  • Eventos
  • Empresas
  • Profesionales
No Result
View All Result
  • Home
  • Glosario
  • Educación
  • Software
    • VPN
    • Antivirus
  • Eventos
  • Empresas
  • Profesionales
No Result
View All Result
Blog de ciberseguridad ciberseguridadtips
No Result
View All Result
Home Glosario de ciberseguridad

¿Cómo funcionan los ataques de CSRF (Cross-Site Request Forgery)? Guía para solucionar esta vulnerabilidad

Melanie Beucher by Melanie Beucher
diciembre 13, 2023
in Glosario de ciberseguridad
0
En la imagen se ve la palabra csrf
0
SHARES
215
VIEWS
Share on FacebookShare on Twitter

Una de las vulnerabilidades más insidiosas y potencialmente dañinas es la Cross-Site Request Forgery (CSRF). Esta vulnerabilidad, que explota la relación de confianza entre el navegador del usuario y el sitio web, puede llevar a consecuencias devastadoras si no se aborda de manera efectiva.

Este artículo se sumerge en el corazón de lo que constituye un ataque CSRF, su mecanismo de funcionamiento, sus peligros inherentes, y lo más importante, cómo se puede detectar y prevenir. Al desentrañar las complejidades de la vulnerabilidad CSRF, proporcionamos una guía comprensiva para entender y mitigar este tipo de ataque, crucial en la preservación de la seguridad en línea.

Contenidos ocultar
1 ¿Qué es un ataque CSRF? (Cross-Site Request Forgery)
1.1 ¿Por qué es tan peligrosa la vulnerabilidad CSRF?
2 ¿Cómo funciona el ataque CSRF?
2.1 Ejemplo de una vulnerabilidad CSRF
2.2 Limitaciones del ataque CSRF
2.3 ¿Qué son defectos CSRF almacenados? ¿Cómo se diferencian de los tradicionales?
2.3.1 Ejemplo de Ataque CSRF Almacenado
3 ¿Cómo detectar una vulnerabilidad CSRF en un código?
4 ¿Cómo prevenir o solucionar una vulnerabilidad CSRF?
4.1 1 | Configura el navegador
4.2 2 | Cerrar sesiones activas
4.3 3 | Uso de navegadores diferenciados
4.4 4 | Añadir un complemento de bloqueo de scripts
4.5 5 | Uso de CSRF Tokens
4.6 6 | Realiza pruebas de penetración (Pentesting)
4.7 7 | Implementa cabeceras de referencia
4.8 8 | Usa la defensa basada en la interacción del usuario
4.9 9 | Añade el atributo de Cookie SameSite
5 Conclusión

¿Qué es un ataque CSRF? (Cross-Site Request Forgery)

Cross-Site Request Forgery (CSRF) es una vulnerabilidad crítica en la seguridad web que permite a los atacantes inducir a los usuarios a realizar acciones involuntarias, explotando la confianza que un sitio web tiene en su navegador..

La peligrosidad del CSRF radica en su capacidad para eludir la política de mismo origen, un mecanismo de seguridad destinado a prevenir interacciones maliciosas entre diferentes sitios web.

¿Por qué es tan peligrosa la vulnerabilidad CSRF?

Esta vulnerabilidad es peligrosa porque permite a los atacantes manipular a los usuarios para que ejecuten acciones no autorizadas en un sitio web en el que ya están autenticados, como modificar configuraciones de cuenta, realizar transacciones o cambiar contraseñas.

Los atacantes pueden engañar a los usuarios para que envíen solicitudes a un sitio web con el que ya han establecido una sesión, utilizando métodos de ingeniería social como correos electrónicos o mensajes de chat engañosos.

Si el usuario objetivo tiene privilegios administrativos, el atacante podría obtener un control total sobre la aplicación y acceder a información sensible o realizar acciones perjudiciales.

¿Cómo funciona el ataque CSRF?

La vulnerabilidad de Cross-Site Request Forgery (CSRF), en su funcionamiento, implica un proceso de varias etapas que aprovecha la confianza entre un usuario y un sitio web.

Para comprender mejor cómo funciona una vulnerabilidad CSRF, es útil desglosar el proceso en pasos claros:

  1. Inserción de código en el servidor: Inicialmente, el atacante logra insertar código malicioso en un servidor, denominado como «Servidor A». Este código es crucial para la ejecución del ataque.
  2. Establecimiento de una sesión legítima: La víctima, mientras tanto, inicia una sesión legítima en otra aplicación web, en «Servidor B». Esta sesión es esencial, ya que el ataque se basa en la explotación de sesiones de usuario válidas.
  3. Acceso a la aplicación comprometida: El usuario, sin saberlo, accede a la aplicación donde el atacante ha insertado el código malicioso. Este paso es crítico porque es donde el usuario se expone al ataque.
  4. Ejecución de solicitudes no autorizadas: El navegador del usuario realiza solicitudes no autorizadas al «Servidor B» sin que el usuario sea consciente de ello. Estas solicitudes pueden incluir acciones como cambiar contraseñas, realizar transacciones o modificar configuraciones.

Pero, para que un ataque CSRF tenga éxito, deben cumplirse ciertas condiciones:

  • Tiene que haber una acción relevante: Debe haber una acción significativa que el atacante quiera inducir, como modificar permisos o cambiar datos específicos del usuario.
  • La gestión de sesiones debe estar basada en cookies: La aplicación debe utilizar cookies para la gestión de sesiones, ya que las cookies se envían automáticamente con cada solicitud HTTP realizada por el usuario.
  • No deben existir parámetros impredecibles: Las solicitudes no deben contener valores que el atacante necesite adivinar o conocer previamente, como una contraseña actual.
En la imagen se muestra cómo funciona un ataque csrf
Así funciona un ataque CSRF

Ejemplo de una vulnerabilidad CSRF

Consideremos una aplicación vulnerable que permite cambiar la contraseña de un usuario sin solicitar la contraseña actual.

La URL de cambio de contraseña podría ser algo como:

http://vulnerablesite.com/vulnerabilities/csrf/?password_new=xxx&password_conf=xxx&Change=Change

En este escenario, el atacante podría engañar a un usuario para que acceda a un sitio malicioso, que a su vez, instruye al navegador para realizar una solicitud al sitio vulnerable, cambiando así la contraseña del usuario.

Limitaciones del ataque CSRF

  • El ataque depende de que el usuario tenga una sesión activa con la aplicación vulnerable.
  • El atacante debe encontrar una URL que efectúe un cambio de estado en la aplicación objetivo.
  • Es esencial que el atacante conozca los valores exactos de los parámetros requeridos para que la aplicación objetivo procese la solicitud.

¿Qué son defectos CSRF almacenados? ¿Cómo se diferencian de los tradicionales?

Los defectos CSRF almacenados se diferencian de los ataques CSRF comunes en un aspecto clave: la persistencia del código malicioso directamente en el sitio web vulnerable. Esto ocurre cuando un atacante logra almacenar un script malintencionado en una parte del sitio que acepta y muestra contenido HTML, como comentarios en un blog o campos de perfil de usuario.

Ejemplo de Ataque CSRF Almacenado

Un ejemplo clásico es la inserción de etiquetas HTML como <img> o <iframe> con acciones maliciosas en sus atributos. Un caso histórico de esto fue el gusano Samy en MySpace, donde un ataque XSS (Cross-Site Scripting) derivó en un amplio compromiso del sitio.

¿Cómo detectar una vulnerabilidad CSRF en un código?

Detectar una vulnerabilidad CSRF en un código implica examinar detenidamente las interacciones entre el cliente y el servidor, especialmente en lo que respecta a la autenticación y la autorización de las solicitudes.

A continuación, se explica cómo se identifica y se rectifica una vulnerabilidad CSRF en el código, tomando como ejemplo una aplicación web escrita en PHP.

<?php
if (isset($_GET[‘Change’])) {
    $pass_new = $_GET[‘password_new’];
    $pass_conf = $_GET[‘password_conf’];

    if ($pass_new == $pass_conf) {
        $pass_new = mysql_real_escape_string($pass_new);
        $pass_new = md5($pass_new);

        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";
        $result = mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>');
        echo "<pre> Password Changed </pre>";
        mysql_close();
    } else {
        echo "<pre> Passwords did not match. </pre>";
    }
}
?>

Para rectificar esta vulnerabilidad, se introduce un parámetro impredecible como password_current, el cual es esencial para cualquier cambio de contraseña y actúa como una capa adicional de autenticación.

<?php
if (isset($_GET['Change'])) {
    $pass_curr = $_GET['password_current'];
    $pass_new = $_GET['password_new'];
    $pass_conf = $_GET['password_conf'];

    $pass_curr = stripslashes($pass_curr);
    $pass_curr = mysql_real_escape_string($pass_curr);
    $pass_curr = md5($pass_curr);

    $qry = "SELECT password FROM `users` WHERE user='admin' AND password='$pass_curr';";
    $result = mysql_query($qry) or die('<pre>' . mysql_error() . '</pre>');

    if (($pass_new == $pass_conf) && ($result && mysql_num_rows($result) == 1)) {
        $pass_new = mysql_real_escape_string($pass_new);
        $pass_new = md5($pass_new);
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";
        $result = mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>');
        
        echo "<pre> Password Changed </pre>";
        mysql_close();
    } else {
        echo "<pre> Passwords did not match or current password incorrect. </pre>";
    }
}
?>

¿Cómo prevenir o solucionar una vulnerabilidad CSRF?

1 | Configura el navegador

La configuración del navegador para no recordar usuarios y contraseñas, y el uso del modo incógnito, son prácticas recomendadas para prevenir ataques CSRF.

Ventajas:

  • Reduce la posibilidad de que las credenciales guardadas sean utilizadas en un ataque.
  • Aumenta la conciencia del usuario sobre la seguridad al ingresar activamente las credenciales.

Desventajas:

  • Requiere que los usuarios ingresen sus credenciales con frecuencia, lo que puede ser inconveniente.
  • Puede no ser práctico para usuarios que dependen de la comodidad de las funciones de autocompletar del navegador.

2 | Cerrar sesiones activas

Cerrar sesiones en aplicaciones y servicios cuando no están en uso disminuye el riesgo de ataques CSRF.

Ventajas:

  • Limita la oportunidad de un atacante para explotar una sesión activa.
  • Fomenta una buena higiene de seguridad entre los usuarios.

Desventajas:

  • Puede ser tedioso para usuarios que acceden frecuentemente a ciertos servicios.
  • Depende de la disciplina del usuario para ser efectivo.

3 | Uso de navegadores diferenciados

Utilizar diferentes navegadores para tareas sensibles y para la navegación general limita la exposición a ataques CSRF.

Ventajas:

  • Ofrece una segregación clara de las actividades en línea, reduciendo la superficie de ataque.
  • Puede mejorar la seguridad al usar un navegador específicamente configurado para tareas sensibles.

Desventajas:

  • Menos conveniente debido a la necesidad de cambiar entre navegadores.
  • Requiere más recursos del sistema y puede complicar el flujo de trabajo del usuario.

4 | Añadir un complemento de bloqueo de scripts

Los complementos que impiden la ejecución automática de scripts son útiles contra CSRF, especialmente para formularios enviados mediante el método POST.

Ventajas:

  • Aumenta la seguridad al necesitar consentimiento explícito del usuario para ciertas acciones.
  • Puede personalizarse para bloquear scripts específicos o sitios web.

Desventajas:

  • Puede romper la funcionalidad normal de algunos sitios web que dependen de scripts.
  • Requiere una configuración cuidadosa para evitar falsos positivos.

5 | Uso de CSRF Tokens

Los CSRF Tokens son una medida de seguridad robusta contra CSRF, generando un valor único y secreto que el servidor envía al cliente.

Ventajas:

  • Proporciona una fuerte defensa contra CSRF al requerir que cada solicitud contenga un token único.
  • Difícil de eludir para los atacantes, ya que no pueden predecir el valor del token.

Desventajas:

  • Requiere cambios en la aplicación del lado del servidor para implementar y gestionar tokens.
  • Puede incrementar la complejidad del desarrollo y mantenimiento de la aplicación.

6 | Realiza pruebas de penetración (Pentesting)

Las pruebas de intrusión o pentesting son esenciales para identificar y corregir vulnerabilidades CSRF.

Ventajas:

  • Permite una detección proactiva y detallada de vulnerabilidades.
  • Ofrece una visión externa y objetiva del estado de seguridad de la aplicación.

Desventajas:

  • Requiere recursos financieros y acceso a expertos en seguridad.
  • Es una medida puntual y no previene futuras vulnerabilidades sin un proceso continuo de revisión.

7 | Implementa cabeceras de referencia

El uso del encabezado referrer en solicitudes HTTP ayuda a verificar el origen de las mismas y prevenir CSRF.

Ventajas:

  • Método sencillo y eficaz para comprobar el origen de las solicitudes.
  • No requiere identificación individual del usuario ni cambios significativos en la aplicación.

Desventajas:

  • Algunas solicitudes legítimas pueden no incluir este encabezado, lo que puede conducir a rechazos erróneos.
  • Puede ser eludido por atacantes sofisticados que manipulan el encabezado referrer.

8 | Usa la defensa basada en la interacción del usuario

La comprensión de los defectos CSRF almacenados se amplía aún más cuando se consideran métodos de defensa específicos que involucran la interacción del usuario y el uso de atributos de cookies. Estas técnicas, aunque pueden afectar la experiencia del usuario, son cruciales, especialmente en operaciones críticas como transacciones financieras.

Algunos de estos metodos pueden ser:

  1. Uso de CAPTCHA: Esta herramienta es eficaz para asegurarse de que el solicitante sea un humano y no un script automatizado. Aunque puede ser un obstáculo para la fluidez de la experiencia del usuario, su eficacia en validar interacciones genuinas lo convierte en un componente vital en ciertas situaciones, como en las transacciones financieras.
  2. Token de Una Sola Vez (OTP): Se trata de un método en el que un token generado aleatoriamente se envía al usuario, normalmente a través de correo electrónico o mensaje de texto. Este enfoque asegura que la persona que realiza la acción es realmente el usuario legítimo y no un atacante.
  3. Reautenticación: En situaciones críticas, solicitar al usuario que vuelva a introducir sus credenciales puede diferenciar efectivamente entre una solicitud genuina y un ataque CSRF.

9 | Añade el atributo de Cookie SameSite

El atributo SameSite de las cookies es una técnica moderna para mitigar los ataques CSRF. Este atributo instruye a los navegadores sobre cuándo deben enviar cookies en las solicitudes entre sitios. Los valores posibles para el atributo SameSite son Strict, Lax y None, cada uno con su propio nivel de restricción en cuanto al envío de cookies.

  • Strict: En este modo, el navegador no envía cookies en sesiones de navegación entre sitios. Este enfoque es útil para aplicaciones que no necesitan mantener sesiones a través de enlaces externos pero puede ser restrictivo para la usabilidad.
  • Lax: Es el valor predeterminado y permite un equilibrio entre seguridad y usabilidad. Las solicitudes permitidas en este modo son generalmente aquellas que utilizan métodos HTTP seguros, permitiendo a los usuarios mantener sus sesiones iniciadas incluso cuando llegan a través de enlaces externos.

Conclusión

El panorama de las amenazas cibernéticas está en constante evolución, y los ataques CSRF siguen siendo un componente prominente en este dinámico campo. Hemos explorado las múltiples facetas de los ataques CSRF, desde su funcionamiento y potencial de daño hasta estrategias de detección y prevención.

Sin embargo, la conciencia y la educación continua en seguridad cibernética son vitales, ya que los atacantes están siempre buscando nuevas brechas y vulnerabilidades. En última instancia, la lucha contra los ataques CSRF es una batalla constante por la seguridad y la privacidad en el espacio digital.

Anterior

¿Cuál es el navegador más seguro para el 2024? TOP +10: Seguridad, privacidad y navegación

Siguiente

¿Quieres realizar la certificación EDRP de EC-Council? Los mejores cursos para obtener tu certificación

Related Posts

En la imagen se ve la palabra cursos de ciberseguridad en republica dominicana en un entorno cibernetico
Educación en ciberseguridad

Encuentra tu curso de ciberseguridad en República Dominicana ideal: El listado de los 9 mejores para el 2024

noviembre 25, 2024
1k
un curso de hacking ético plantea hacer la ingenieria inversa de lo que son los hackers en si
Educación en ciberseguridad

Curso de hacking ético: Los 10 mejores y sus características

noviembre 2, 2024
1.1k
fp ciberseguridad
Educación en ciberseguridad

Las mejores 7 FP en Ciberseguridad ¡Descúbrelas aquí!

noviembre 2, 2024
859
15 mejores máster de ciberseguridad en España | 2023-2024
Educación en ciberseguridad

15 mejores máster de ciberseguridad en España | 2023-2024

noviembre 2, 2024
4.1k
Ilustrativa sobre alumno en un curso de redes y seguridad informática
Educación en ciberseguridad

Curso de Redes y Seguridad Informática: el TOP 12

noviembre 2, 2024
315
Siguiente
En la imagen se ve la palabra cursos para la certificación edrp

¿Quieres realizar la certificación EDRP de EC-Council? Los mejores cursos para obtener tu certificación

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Browse by Category

  • Antivirus
  • Educación en ciberseguridad
  • Empresas de ciberseguridad
  • Eventos de ciberseguridad
  • Glosario de ciberseguridad
  • Noticias
  • Profesionales de ciberseguridad
  • Software de ciberseguridad
  • VPN

Browse by Tags

Argentina Avanzado Bolivia Certificaciones Chile Colombia Conferencia Congreso Costa Rica Curso Cursos Ecuador El Salvador Encuentro Entrevista España Feria Finalizados Jornada Licenciatura Linux México Panamá Perú República Dominicana Reseña Tutoriales VPN
  • Contacto
  • Home
  • Política de Privacidad de CiberseguridadTips
No Result
View All Result
  • Home
  • Glosario
  • Educación
  • Eventos
  • Software

Quiero comparar con otra formación.

El 70% de los usuarios compara al menos con otro centro de formación.

Acepto la Política de Privacidad