septembre
2011
Hop, encore une petite période de pic de passée, un peu de temps pour blogger
Après s’être intéressé a debug=true et a customErrors=false, on va voir ce que notre bon vieux Web.Config a à dire sur les cookies
Non, pas ceux-la…
httpOnlyCookies
En me connectant sur un site, je me rends compte que, suite a la connexion, mon navigateur stocke des informations sous forme de cookies, que je peux ensuite accéder grâce a la ligne suivante en javascript:
En soi, pas de gros problème.
Ceci dit, si en plus, le site contient une quelconque faille XSS, ce code va me permettre de récupérer le contenu d’un cookie, et de le renvoyer sur un autre site. A partir de la, c’est la fin des haricots.
Un solution qui couvre 100% du problème est de ne pas utiliser de cookies (bon courage…oubliez session, et autres joyeusetés, mais c’est faisable).
Une solution qui ne couvre *que* 90% du problème est d’ajouter la ligne suivante au web.config:
Mettre cette option a true va flagger tous les cookies comme étant des cookies httpOnly, qui ne pourront pas être accédés en javascript. Le risque de vol d’identité est donc du coup limité aux utilisateurs qui accèderaient le site avec un navigateur ne gérant pas httpOnly (tant pis pour eux)
cookieLess
Ca y’est, nos cookies sont en httpOnly, maintenant, on est tranquille…ou pas
Deux mécanismes capitaux d’asp.net se basent sur les cookies pour fonctionner:
- la session
- l’authentification de type Forms
Malheureusement, certains utilisateurs pouvant, pour des raisons diverses, ne pas avoir une configuration leur permettant de gérer les cookies, un mécanisme de gestion « sans cookies » a été implémenté pour ces mécanismes.
LE « petit » problème de ce mode est qu’il va ajouter une clé directement dans l’url. Il suffit donc de sniffer le réseau pour voir passer toutes les URLs contenant cette clé, et de copier une de ces URLs pour voler l’identité de l’utilisateur.
Alors, effectivement, cela ne va cibler que les utilisateurs qui ne peuvent pas stocker de cookies, mais si une société mets en place une règle empèchant le stockage des cookies, *tous* les utilisateurs de l’entreprise en question vont potentiellement permettre le vol de leur identité.
A cela, trois options:
- mettre cookieLess = UseCookies. Dans ce cas, les utilisateurs n’acceptant pas les cookies seront incapables d’utiliser le site
- mettre cookieLess = AutoDetect. Dans ce cas, les utilisateurs n’acceptant les cookies pourront utiliser le site, mais seront vulnérables. Une façon de limiter ce risque est décrite dans cet article -> http://msdn.microsoft.com/en-us/magazine/dd458793.aspx
- mettre en place du SSL sur tout le site va aussi limiter les risques
requireSSL
Vous avez un joli site web tout sécurisé, en SSL, vous avez mis les cookies en httpOnly, tout va bien. Sauf que soudain, vous vous rendez compte que vous vous êtes connecté en admin a une heure du matin et que vous avez aspiré toutes les adresses clients de la base. Aïe…
En fait, il est possible (un peu compliqué, mais envisageable) en exploitant une faille XSS, de voler un cookie qui est censément transmis a un site alors que le site est supposé être accédé en SSL.
En effet, si l’attaquant redirige l’utilisateur sur une adresse locale au site, mais en utilisant HTTP au lieu de HTTPS, même si le site ne va pas transmettre d’information (une exception sera remontée), le cookie sera tout de même transmis en clair…
Pour cela, la solution est simple, il suffit d’ajouter requireSSL= »true » au niveau de la balise httpCookies du web.config
Références
La plupart de ces infos viennent des tréfonds du site d’OWASP, une vraie mine d’or du genre.
Pour la suite, je laisse la sécurité de coté, il y’a des petites astuces de performances a voir
Articles récents
Archives
- janvier 2014
- septembre 2013
- août 2013
- mai 2013
- avril 2013
- janvier 2013
- août 2012
- juin 2012
- mai 2012
- avril 2012
- mars 2012
- novembre 2011
- septembre 2011
- août 2011
- juillet 2011
- juin 2011
- mai 2011
- avril 2011
- février 2011
- janvier 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009