Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

REQ.030 Evitar reciclaje de objetos de autenticación

En el presente documento se detallan los requerimientos de seguridad relacionados al manejo de sesiones y variables de sesión de las aplicaciones. Por lo tanto, para el presente requerimiento, se recomienda que el sistema no permita reutilizar objetos vinculados a procesos de autenticación.

Requisito

Se debe controlar que un objeto (id de sesión, cookie, etc) que participe en el proceso de autenticación no pueda ser reutilizado.

Descripción

En un sistema se debe controlar si la información transmitida está siendo reutilizada por un atacante para suplantar a un usuario autorizado o la respuesta del servidor, por lo que se hace primordial verificar las comunicaciones entre los usuarios y el sistema, evitando de esta forma la reinyección de cualquier tipo de información que afecte la confidencialidad y/o disponibilidad del mismo.

Implementación

Para prevenir este tipo de suplantación, se pueden considerar varias opciones dependiendo del contexto y la forma de implementación. A continuación se listan algunas de las buenas prácticas que se pueden considerar para evitar la reutilización de datos en el sistema:

  1. Números de un solo uso (Cryptographic nonce): Consiste en números que expiran luego de su primer uso o luego de un lapso de tiempo pequeño, con los cuales se puede verificar la autenticidad de un mensaje. Suelen ser aleatorios y usados en protocolos de autenticación para asegurar que comunicaciones pasadas no puedan ser reutilizadas.

  2. Marcas de tiempo (timestamping): Para esto debe existir una sincronización de relojes entre cliente y servidor. El servidor solo acepta mensajes con fecha y hora dentro de un margen de tolerancia. De este modo, se minimiza el riesgo de un posible ataque al proveer una ventana de tiempo más ajustada para la explotación.

  3. Tokens de sesión: Consiste en que el servidor envía un código token, el cual es usado por el cliente para transformar la clave (por ejemplo aplicando una función de resumen a la unión de la clave y el token) antes de enviarla de nuevo al servidor, valor con el que se compara la autenticidad del cliente. Con esto si un atacante intenta realizar un ataque de repetición no funcionará ya que el token que el servidor enviará será diferente (la generación de este debe ser aleatoria).

  4. Time-out de sesión: Permitir que los usuarios salgan de la aplicación y limpiar su sesión, es decir, cuando un usuario sale de la aplicación, se deben invalidar sus sesiones tanto en cliente como en servidor.

  5. Canal seguro: Usar canales de transporte seguros al transferir las cookies, para evitar que sean capturadas (Man in The Middle).

Ataques

  1. Robo de sesión.

  2. Suplantación de identidad.

  3. Hombre en el medio (MiM).

  4. Ataques de repetición.

Atributos

  • Capa: Capa de Aplicación.

  • Activo: Administración de sesiones.

  • Alcance: Autenticidad.

  • Fase: Construcción.

  • Tipo de Control: Recomendación.

Referencias

  1. CWE-294: Authentication Bypass by Capture-replay.

  2. CAPEC-60: Reusing Session IDs (aka Session Replay).

  3. CWE-287: Improper Authentication.

  4. HTTP Authentication: Basic and Digest Access Authentication.

  5. OWASP-ASVS v3.1-2.12 Verificar que todas las decisiones de autenticación puedan ser almacenadas, sin almacenar información sensible como identificadores de sesión o contraseñas. Esto debe incluir tambien solicitudes con metadatos relevantes necesarios para las investigaciones de seguridad.

  6. OWASP-ASVS v3.1-3.7 Verificar que toda autenticación exitosa y re autenticación genere una nueva sesión y un nuevo identificador de sesión.


Estado de los servicios - Términos de Uso