XUT_ / COURSES / PENETRATION TESTER

Securing the Session Lifecycle

Por fin es hora de aprender sobre la seguridad del manejo de sesiones. Examinaremos qué puede salir mal en cada fase del ciclo de vida del manejo de sesiones.


Creación de Sesiones

Es donde la mayoría de vulnerabilidades ocurren. Veamos algunas comunes.

Valores de Sesión Débiles

Es menos común ver este tipo de vulnerabilidad hoy en día. Sin embargo, con el boom de los LLMs y otros asistentes de código de IA, te sorprendería ver cómo de común se esta volviendo.

Si se ha implantado un mecanismo de inicio de sesión personalizado, hay una buena probabilidad que los valores de sesión sean adivinables.

Valores de Sesión Controlables

En ciertos tokens, como JWT, toda la información relevante para crear y verificar la validez del JWT es dada. Si no se refuerzan las medidas de seguridad, como verificar la firma del token o asegurarse de que la firma fue creada de manera segura, un atacante podría generar su propio token.

Fijación de Sesión

Las aplicaciones web que te dan una sesión antes de autentificarte pueden ser vulnerables a algo llamado fijación de sesión. Si tu valor de sesión no rota adecuadamente una vez te autentificas, un atacante podría cogerla cuando todavía no estas autentificado y usarla para autentificarse.

Transmisión de Sesión Insegura

En entornos modernos, es común que el servidor de autentificación y el servidor de la aplicación sean distintos. Para que esto funcione, tu material de sesión debe transmitirse de uno a otro. El método más común por el cual esto pasa es que el atacante pueda controlar la URL de post autentificación. Esto no son cuentos chinos. La implementación de una solución SSO en Oracle tenía un bug que permitía esto.


Control de Sesiones

Es el segundo sitio más grande de vulnerabilidades.

Bypasseo de Autorización

Un bypasseo de autorización ocurre cuando no hay suficientes comprobaciones siendo realizadas para saber si el usuario tiene permitido realizar la acción solicitada. Hay dos tipos de bypasses de autorización:

  • Bypasseo Vertical: Puedes realizar una acción que está reservada para un usuario con más privilegios.
  • Bypasseo Horizontal: Puedes realizar una acción que tú puedes hacer, pero en un conjunto de información al que no deberías tener acceso.

El bypasseo vertical es fácilmente remediable, sin embargo el horizontal es más difícil pues el usuario está realizando una acción que sí está autorizado a hacer solo que con la información de otro usuario.

Registro Insuficiente

Un problema clave durante los incidentes es no tener suficiente información para montar el puzzle de las piezas del ataque. Mientras que mucho registro ocurrirá a nivel de infraestructura, el registro a nivel de aplicación puede ser crucial para entender qué salió mal. Es importante asegurarse de que los registros cubran tanto los inicios de sesión exitosos como los fallidos.


Expiración de Sesiones

Tiene una sola vulnerabilidad que es cuando el tiempo de expiración de una sesión es excesivo. Una sesión debería ser vista como un ticket a una película. Cada noche se muestra la misma película. Pero no queremos que alguien entre hoy con el ticket de ayer. Para asegurarnos de que el tiempo de sesión es adecuado debemos tener en cuenta el tipo de acciones que se realizan. Una aplicación de banco debería tener un tiempo de expiración más corto que tu cliente de email.


Terminación de Sesiones

Para la terminación de sesiones el problema clave es cuando las sesiones no se cierran bien del todo del lado del servidor. Además es recomendable que después de un cambio de contraseña se termine la sesión