réf : http://blog.bousquie.fr/home/cas-et-le-phishing
sécurité de CAScontexte : CAS 3.3.5-2 installé à partir de la cas-toolbox ESUP
1. Comment déployer et améliorer les filtres de CAS ?Le but est d'éviter qu'un attaquant n'invite un de nos utilisateurs à venir sur un lien du genre https://cas.univ.fr/cas/login?service=http://pirate.org Ce type de lien permet au pirate d'inspirer d'abord confiance à l'utilisateur avant de le rediriger vers un site corrompu que l'utilisateur considèrera comme étant de confiance. CAS permet normalement d'activer des filtres décrivant les services autorisés. Cependant la version livrée dans la toolbox esup présente un petit bug si l'on utilise des caractères génériques pour filtrer sur le domaine *.univ.fr. Un attaquant peut en effet contourner le filtre avec
une URL de la forme
https://cas.univ.fr/cas/login?service=http://pirate.org?www.univ.fr. (cf bug : https://issues.jasig.org/browse/CAS-1071) Pour ceci, on télécharge une nouvelle classe java : https://issues.jasig.org/secure/attachment/12540/RegRegisteredServiceImpl.java. On dépose ce source dans le custom, après avoir créé les répertoires ad hoc, c'est à dire Puis on modifie le fichier serviceRegistryDao comme ceci : <bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
Comme d'habitude, pour déployer proprement cette modification :
Merci à Julien Marchal de l'Université de Lorraine pour cette résolution. 2. Comment supprimer la redirection sur le logout ?Le but est d'éviter qu'un attaquant utilise le formulaire de logout, qui n'est pas filtré, pour amener un utilisateur sur un site pirate avec une redirection de la forme : https://cas.univ.fr/login?service=https://cas.univ.fr/logout?service=http://pirate.org Pour ceci, on édite le fichier <bean id="logoutController" class="org.jasig.cas.web.LogoutController" p:centralAuthenticationService-ref="centralAuthenticationService" p:logoutView="casLogoutView" p:warnCookieGenerator-ref="warnCookieGenerator" p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" p:followServiceRedirects="false"/> Merci à Frédéric Soulier de l'Université de Toulouse 1 Capitole pour cette information. 3 .Comment empêcher l'encapsulation ou la proxification du formulaire de login ?Le but est d'empêcher que le formulaire CAS soit affiché dans une frame/iframe ou soit affiché sous un autre domaine que celui de l'établissement. Il faut ajouter dans la zone <script type="text/javascript"> Le browser est redirigé vers http://warning.univ.fr/cas/?pirate=valeur du referer. Cette page indique alors à l'utilisateur qu'il vient de d'aller sur un site, soit qui en encapsulait CAS, soit qui proxifiait CAS (valeur du referer est alors différent de l'URL de login ou de logout du CAS officiel). |