Por lo que puedo ver, CAS es una forma de autenticación OAuth2, aunque no usan ese término en su sistema.
Para que OAuth2 sea seguro, el servicio que lo usa debe tener un conjunto de claves (es más como tener un nombre de usuario y una contraseña secretos). Sin tales claves, sería muy fácil enviar el el usuario directamente al servidor de CAS con una ID para que el atacante sepa exactamente qué ID va a utilizar.
+------------------+ +----------------------+
| | | |
| Your Server +-------+---------->| CAS Server |
| | | | |
+------------------+ | +--------+-------------+
| |
+------------------+ | |
| | | |
| Hacker Server +-------+ |
| | v
+---------+--------+ +----------------------+
. | |
+...........................>| Back to Your Server |
| |
+----------------------+
Sin algunos secretos de su computadora, tenemos una forma muy sencilla de saber cuál es el identificador de la sesión como hacker. Simplemente generamos dicha ID y lo enviamos al servidor CAS. Espere un poco y luego acceda al servidor en cuestión.
Me imagino que CAS tiene los secretos necesarios para que esto no funcione.
Ahora, si puedo crear un ataque XSS que establezca una cookie con el ID de sesión, también puedo obtener los conocimientos necesarios para conectarme al servidor una vez que el usuario haya iniciado sesión.
Con el XSS probablemente estarían explotando un problema en sus sistemas. Así que el pirata informático tiene un enlace a su servidor que hace algo malo y ejecuta el código del pirata informático (JavaScript o una etiqueta meta). Ese código establece la ID de sesión o verifica la ID de sesión existente y la envía a una de las computadoras del pirata informático.
+------------------+ +----------------------+
| | | |
| Your Server +------------------>| CAS Server |
| | | |
+------------+-----+ +--------+-------------+
^ | |
| | |
| v v
+--------+---------+ +----------------------+
| | | |
| Hacker Server +..................>| Back to Your Server |
| | | |
+------------------+ +----------------------+
En este caso, ya que la ID de la sesión no cambiará, tendrán acceso a su servidor durante 15 a 20 minutos una vez que el usuario haya iniciado sesión. Un ataque XSS es bastante fácil de evitar, pero he oído hablar de muchos de estos ataques (trabajé en Drupal por un tiempo y descubrí algunos de programadores que no piensan fuera de la caja y usan datos posiblemente contaminados como están).
Un ejemplo de esto es llegar a una página 404 utilizando el código en el URI:
http://example.com/<script>document.cookie = "JSESSIONID=123";</script>
Un programador que crea una página 404 y muestra la etiqueta <script>
tal como está (es decir, sin reemplazar el <
con <
y >
con >
) permite una El ataque entre sitios ya que el JavaScript malicioso se ejecutará en su sitio.
Tenga en cuenta que con un ataque Man In The Middle (MITM), ni siquiera necesita un XSS o una mala implementación tipo OAuth2. Pero es más difícil ejecutar un MITM y en la mayoría de los casos requiere un lugar público para que las personas en el trabajo tengan menos probabilidades de tener un colega pirata informático que sepa cómo ser un MITM.