Caso de uso: Cómo fortalecer la seguridad en una aplicación web usando buenas prácticas de Ciberseguridad

Desarrollo Web 26 de jun. de 2024

Conoce este caso práctico y aprende a combatir vulnerabilidades y mejorar la seguridad de un desarrollo concreto.

Escenario

Un desarrollador está creando una aplicación web para una tienda en línea. Inicialmente, la aplicación no seguía las mejores prácticas de seguridad y era vulnerable a varios tipos de ataques. Después de aprender sobre el OWASP Top 10, el desarrollador implementa las siguientes mejoras, enfocándose en prevenir ataques XSS y CSRF.

¿Qué es el OWASP Top 10?
El OWASP Top 10 es una lista de los diez riesgos de seguridad más críticos para aplicaciones web, compilada por la Open Web Application Security Project (OWASP). Esta lista se actualiza regularmente y sirve como un estándar reconocido mundialmente para ayudar a los desarrolladores y organizaciones a mejorar la seguridad de sus aplicaciones web.

Desarrollo web sin buenas prácticas de Ciberseguridad

Imaginémonos que nos encontramos en un entorno de desarrollo y todavía desconocemos sobre Fundamentos de Ciberseguridad, ¿cuáles serían las vulnerabilidades típicas a las que nos podríamos enfrentar?

1. Vulnerabilidad a XSS (Cross-Site Scripting)

¿Qué es XSS?

XSS (Cross-Site Scripting) es una vulnerabilidad común en las aplicaciones web que ocurre cuando un atacante inyecta scripts maliciosos en páginas web vistas por otros usuarios. Estos scripts pueden robar información confidencial, como credenciales de usuario, y realizar acciones maliciosas.

Tipos de ataques XSS:

  • Almacenados: El script malicioso se guarda en el servidor web a través de campos de entrada, como comentarios o publicaciones. Cuando otros usuarios visitan la página, el script se ejecuta en sus navegadores.
  • Reflejados: El atacante envía una URL maliciosa a usuarios desprevenidos. Cuando los usuarios hacen clic en el enlace, el script se ejecuta y puede robar información o realizar acciones no autorizadas.
  • Basados en DOM: El atacante manipula el DOM (Modelo de Objetos del Documento) de una página web en el navegador del usuario, provocando que se ejecute el script malicioso sin interacción directa con el servidor.

Problema en caso de uso

La aplicación no validaba si las entradas (inputs) del usuario eran correctas o seguras, ni las transformaba para evitar que un atacante pueda inyectar un script malicioso en un campo de entrada (como la zona de comentarios)

Explicación del riesgo

  • El atacante inserta un código malicioso en la zona de comentarios de la tienda en línea. Este script envía las cookies de sesión del usuario al servidor del atacante, permitiéndole secuestrar la sesión del usuario.

Ejemplo de código malicioso en HTML

  • La aplicación almacena el comentario del atacante en la base de datos tal como se introdujo, sin validación o transformación.
  • El usuario visita la página donde se muestra el comentario realizado por el atacante. En ese momento, la aplicación recupera el comentario de la base de datos y lo inserta en el HTML de la página.
  • El navegador del usuario ve el HTML y ejecuta el código malicioso dentro del comentario.
  • El atacante consigue robar las cookies del usuario y acceder a su cuenta. Las cookies de sesión del usuario se envían al servidor del atacante. El atacante ahora puede usar las cookies robadas para hacerse pasar por el usuario y acceder a su cuenta.

Ejemplo de código vulnerable (JavaScript)

2. Vulnerabilidad a CSRF (Cross-Site Request Forgery)

¿Qué es CSRF?

CSRF, o Cross-Site Request Forgery (Falsificación de Petición en Sitios Cruzados), es un tipo de ataque en el que un usuario malintencionado engaña a un navegador web para que ejecute acciones no autorizadas en un sitio web en el que el usuario está autenticado. Básicamente, el atacante logra que el navegador de la víctima envíe solicitudes HTTP a un sitio web confiable, utilizando la identidad y los privilegios del usuario sin su consentimiento.

Problema en caso de uso

La aplicación no utilizaba tokens CSRF para proteger las acciones sensibles, como la actualización de la dirección de entrega de los pedidos.

Explicación del riesgo

  • El usuario está autenticado en la tienda en línea: El usuario ha iniciado sesión.
  • El atacante crea una petición maliciosa: El atacante crea una página web maliciosa programada para enviar una solicitud para cambiar la dirección del usuario a la dirección del atacante, donde se entregarán los productos comprados en línea.

Ejemplo del código (HTML)

  • El usuario visita la página maliciosa mientras está autenticado en la tienda en línea.
  • La solicitud de cambio de dirección se envía automáticamente. Sin que el usuario lo sepa, su navegador envía la solicitud maliciosa a la tienda en línea, aprovechando la sesión autenticada del usuario.
  • La tienda en línea procesa la solicitud: La tienda en línea recibe la solicitud como si fuera una acción legítima del usuario autenticado y cambia la dirección del usuario a la dirección del atacante, donde se entregarán los productos comprados en línea.

Ejemplo de Código Vulnerable (JavaScript/Node.js)

Desarrollo web con buenas prácticas de Ciberseguridad

Luego de conocer sobre OWASP TOP 10, podrás implementar buenas prácticas de ciberseguridad para mitigar esos riesgos y fortalecer tu aplicación web. En este caso de uso, veremos como protegerte contra XSS y CSRF. Podrás implementar buenas prácticas de Ciberseguridad para fortalecer tu aplicación web. Recordemos que las implementaciones realizadas serán las que vemos a continuación: protección contra XSS y CSRF.

1. Protección contra XSS


Implementación

Se instaló una librería de saneamiento que permite validar las entradas del usuario y transformarlas para evitar que un atacante inyecte un script malicioso.

Explicación de la solución

  • Conversión de caracteres → La librería de saneamiento convierte caracteres especiales en sus representaciones HTML para que no se interpreten como código. Por ejemplo, convertir < en &lt; y > en &gt;.
  • El atacante escribe el código malicioso en los comentarios
  • La librería transforma la entrada del atacante
  • Dada la transformación de los caracteres, el navegador muestra el texto literal sin ejecutarlo, evitando que el atacante robe las cookies y por tanto consiga la información de autenticación del usuario.

Integración de la solución

  • Paso 1: Instalar librería
  • Paso 2: Utilizar la librería en el código

Ejemplo de Código Seguro (JavaScript)

Beneficio: Esto previene la inyección de scripts maliciosos, protegiendo la integridad de los datos del usuario.

2. Protección contra CSRF

Implementación

Se integraron tokens CSRF para proteger las acciones sensibles.

Explicación de la solución

  • Generar y Enviar el Token: Cuando el usuario carga la página del formulario para actualizar la dirección, la aplicación genera un token CSRF único (que solo se puede generar en la aplicación real) y lo envía al formulario.
  • Intento del atacante: Dado que el sitio web del atacante no puede generar un token CSRF válido, no lo incluye en la solicitud del cambio de dirección, y por tanto, se rechaza.

Integración de la solución

  • Paso 1: Instalar la librería CSRF
  • Paso 2: Utilizar la librería en el código

Generación del Token (JavaScript)

Formulario Seguro con Token CSRF (HTML)

  • Verificación del Token (JavaScript)

Beneficio

Esto previene que un atacante pueda inducir a un usuario autenticado a realizar acciones no deseadas en la aplicación.

Resultados

  • Seguridad mejorada: Las contraseñas están protegidas adecuadamente y se eliminan las vulnerabilidades de XSS y CSRF.
  • Confianza del usuario: Los usuarios confían más en la aplicación porque saben que sus datos están protegidos.
  • Reducción de riesgos: Se reducen significativamente los riesgos de ataques cibernéticos, evitando potenciales pérdidas financieras y de reputación.

¿Interesado en ver el Caso de Uso completo?

Si quieres recibir el detalle del caso de uso donde un desarrollador web implementa las mejoras descritas para prevenir ataques XSS y CSRF, déjanos tu nombre y correo electrónico en este link. Estamos evaluando el interés en este contenido y lo desarrollaremos si hay suficiente demanda. ¡No te pierdas esta oportunidad de aprender cómo proteger mejor tus aplicaciones web!

¿Quieres aprender más sobre Ciberseguridad y crear soluciones más robustas?

Lanzamos un curso de upskilling de Fundamentos de Ciberseguridad para que aprendas sobre un tema crucial para el mundo digital actual. Aprovecha nuestro precio de lanzamiento en hasta 3 cuotas fijas y conviértete en una pieza clave en tu trabajo. Regístrate en el curso y prepárate para dar el siguiente paso. To the moon!?

Etiquetas

¡Genial! Te has suscrito con éxito.
¡Genial! Ahora, completa el checkout para tener acceso completo.
¡Bienvenido de nuevo! Has iniciado sesión con éxito.
Éxito! Su cuenta está totalmente activada, ahora tienes acceso a todo el contenido.