Resumen
evil.example.com podría usar un marco oculto para solicitar un ticket de CAS de corporation.example.net, luego validarlo para recibir el nombre de usuario del infortunado usuario. De este modo, se deseanomiza de manera efectiva al usuario de CAS en cualquier sitio malicioso que visite.
- Como autor / mantenedor de un servidor CAS, ¿cómo puedo evitar la desanomización de mis usuarios?
- Como usuario de CAS, ¿cómo puedo evitar la desanomización de mí mismo?
Fondo:
CAS (Central Authentication Service) es un sistema de inicio de sesión único con un flujo basado en redireccionamiento:
- La página del cliente redirige al servidor CAS con un parámetro
serviceque es la URL del sitio del cliente. - El servidor CAS autentica al usuario a través de una cookie existente, una página de inicio de sesión, etc.
- El servidor CAS redirige a
serviceURL con el parámetroticketadjunto. - El cliente llama a un punto final de validación del servidor, intercambiando el ticket por un nombre de usuario.
Ataque
- El usuario ya se ha autenticado con el servidor CAS de
corporation.example.nety su navegador tiene la cookie de otorgamiento de tickets para ese dominio. - El usuario navega a
http://evil.example.com/dancing-bunnies.html, que incrustahttp://corporation.example.net/cas/login?service=http://evil.example.com/attack.htmlcomo marco. (El marco es menos visible que una redirección, no hay diferencia de seguridad). - El punto final
/logindel servidor CAS en el marco ve que el agente de usuario ya tiene cookies de inicio de sesión, por lo que redirige ciegamente a la URL del servicio, más un ticket:http://evil.example.com/attack.html?ticket=ST-abc123 -
evil.example.comlee el ticket de la cadena de consulta y GETshttp://corporation.example.net/cas/validate?service=http://evil.example.com/attack.html&ticket=ST-abc123, que responde conyes\nalice\n. -
evil.example.comahora sabe que el usuario esalice@corporation.example.net.
Posible mejora
- Restrinja el dominio en las URL de los parámetros
servicea un conjunto seguro conocido - Requieren la interacción del usuario antes de redirigir de nuevo al cliente
- Forbid framing (ya sea con encabezados o secuencias de comandos)
¿Alguna desventaja de cualquiera de estos? ¿Hay otras soluciones?
Notas
- Es probable que no sea práctico restringir el parámetro
servicea una coincidencia de cadena en un conjunto de URL seguras conocidas, ya que los clientes lo utilizan para llevar el estado a través del proceso de redireccionamiento.
ETA: Estaré muy triste si tu respuesta asume lo siguiente ...
- ... que el ataque se basa en la comunicación de origen cruzado.
- ... que estoy diciendo que esto hace otra cosa que no sea desanonizar al usuario