cd ~/blog

~/vulns/client-side-authorization-bypass.md

Client-Side Authorization Bypass

webautor: Jordy Pérez Osorio aviso legal
webaccess-control

~2 min de lectura


1. Descripción técnica

Un bypass de autorización del lado cliente aparece cuando el servidor confía en una decisión, atributo o estado que el usuario puede modificar. JavaScript, cookies sin integridad, campos ocultos y propiedades de red declaradas por el cliente no constituyen una frontera de seguridad por sí solos.

La interfaz puede ocultar un enlace o redirigir a usuarios no autorizados, pero la protección real debe ocurrir cuando el servidor recibe la petición al recurso protegido.

1.1. Mecanismo

// renderizando diagrama…

2. Impacto

El impacto depende del recurso liberado: exposición de credenciales, acceso a funciones administrativas o ejecución de acciones con un rol no concedido. No es necesario romper cifrado si el servidor acepta directamente un valor modificable.

3. Condiciones necesarias

  1. El atacante controla o puede falsificar el dato utilizado en la decisión.
  2. El servidor no liga ese dato a una identidad autenticada mediante integridad verificable.
  3. El recurso final carece de una comprobación de autorización independiente.

4. Validación y detección

Se repite la petición fuera de la interfaz normal y se modifican de forma acotada cookies, parámetros o cabeceras relevantes. El resultado se compara con una sesión sin privilegios y otra autorizada.

En revisión de código se identifica dónde ocurre la decisión efectiva. Una comprobación presente sólo en JavaScript no protege una ruta servida directamente.

5. Explotación documentada en los writeups

5.1. 011-warrior

internal.php revela una contraseña cuando la dirección MAC coincide con un patrón. La MAC puede modificarse en la interfaz local y no demuestra la identidad del usuario.

5.2. 014-darkside

JavaScript comprueba si la cookie side vale darkside y redirige al recurso. Modificar la cookie permite alcanzarlo porque el servidor no repite la autorización.

6. Mitigación

  • Aplicar autenticación y autorización en cada ruta sensible del servidor.
  • Derivar permisos desde la sesión validada, no desde valores aportados por el cliente.
  • Proteger tokens de estado con integridad y verificar además su vigencia y audiencia.
  • Tratar controles del navegador como experiencia de usuario, nunca como barrera única.
  • Registrar discrepancias entre el estado declarado por el cliente y la política del servidor.

7. Clasificación

  • CWE principal: CWE-602
  • CWE relacionada: CWE-807
  • Vector: dato controlado por el cliente usado en una decisión de seguridad

8. Referencias y conexiones

// relacionados