web-dev-qa-db-fra.com

Faut-il se déconnecter des webapps?

Une recherche rapide sur Google ne révèle pas s'il est important de se déconnecter des applications Web (services bancaires en ligne, Amazon, Facebook, etc.), ou si je suis en sécurité en fermant simplement l'onglet ou le navigateur. Je suis sûr d'avoir entendu dans une émission de télévision qu'il vaut mieux se déconnecter ...

À quelles menaces potentielles je m'expose si je ne me déconnecte pas correctement?

97
Angelo.Hannes

Ce n'est pas une question triviale et simpliste. Il y a plusieurs aspects différents que vous devez prendre en compte, et plusieurs mécanismes et contre-mesures différents qui s'appliquent à plusieurs menaces différentes dans plusieurs scénarios différents qui sont affectés par plusieurs clients différents. Examinons-les un par un. (Il y aura un TL; DR à la fin ...)

  • Si vous utilisez un ordinateur public: DÉCONNEXION.
    Tout service sur lequel vous détenez un compte ne doit pas être laissé connecté sur une machine accessible au public.

  • Si vous utilisez un service Trivial non sensible: RESTEZ CONNECTÉ.
    Cela ne s'applique qu'aux comptes temporaires jetables, comme la radio Internet, où donner l'accès n'est rien d'autre qu'une nuisance.

  • Si vous utilisez Wifi public: DÉCONNEXION.
    Le réseau étant intrinsèquement non fiable, il y a une grande évidence MENACE: Vol de cookie de session. Il est possible que votre session ait été détournée, et quelqu'un - soit quelqu'un d'autre sur le réseau, soit le hotspot lui-même - a volé votre cookie de session. Bien sûr, si c'était le cas, vous ne le sauriez pas, mais vous ne pourrez peut-être pas vraiment vous déconnecter non plus (s'il s'agit d'un réseau malveillant ou de MITM, ils ont le contrôle de toute votre connexion - ils pourraient simplement abandonner votre demande de déconnexion).

    Cela dit, le vol par un tiers uniquement de votre cookie de session IS une menace valide (par exemple FireSheep ), et une déconnexion explicite empêche une utilisation illimitée. (Fondamentalement, les dommages peuvent avoir déjà fait, mais cela l'empêche de continuer.)

    Encore mieux serait d'aller sur un réseau de confiance, de vous connecter et de vous déconnecter explicitement, juste au cas où le MITM a bloqué votre déconnexion. Mieux vaut encore changer votre mot de passe sur le site de confiance ... Mais mieux vaut ne jamais accéder à un site sensible et non trivial à partir d'un réseau non fiable.

  • Si vous utilisez des applications toute la journée: RESTEZ CONNECTÉ.
    Pour les services que vous utilisez toute la journée et que vous souhaitez accéder rapidement et facilement, par ex. Facebook, e-mail, etc. - S'il s'agit de votre propre ordinateur privé (ou professionnel) sur un réseau de confiance, il est judicieux de laisser votre navigateur connecté à long terme.

    MENACE: spectateur malveillant

    Verrouillez votre ordinateur à chaque fois que vous vous éloignez, même pour prendre une tasse de café. Ou verrouillez votre bureau, si vous avez une porte physique que personne d'autre ne peut franchir. (Ou avoir un bureau à domicile, wheee!) Déconnectez-vous et reconnectez-vous régulièrement. Surveillez tous les messages que vous faites.

    MENACE: D'autres sites peuvent enregistrer que vous êtes connecté (par exemple pour vous montrer cette icône "J'aime" importante de Facebook). Cela fait partie du compromis qui s'applique, alors qu'il y a des implications plus larges qui sont hors de portée pour cette réponse.

  • Si vous utilisez Toute application qui utilise l'authentification de base HTTP (par exemple de nombreux routeurs): DÉCONNEXION ET FERMER [~ # ~] toutes [~ # ~] = NAVIGATEUR WINDOWS. Voici où cela devient intéressant, et cela s'applique également à la section suivante.

    Lorsque vous vous connectez à une application Web à l'aide de Basic AuthN, le navigateur met en cache votre mot de passe et l'envoie à chaque demande. Le mécanisme BasicAuth du navigateur n'a pas de concept de session. Même si vous vous déconnectez à plusieurs reprises, la webapp n'a - ni côté serveur ni côté client - aucun moyen de "tuer" la session. La seule façon d'effacer ces informations d'identification mises en cache est de tuer le processus du navigateur.

    [~ # ~] cependant [~ # ~] . Votre choix de navigateur est important pour ce concept de "processus de navigation". Par exemple.:

    • Firefox : toujours un seul processus, quel que soit le nombre d'onglets et de fenêtres que vous ouvrez.

    • Chrome : Chaque onglet est un processus distinct. Cependant, il existe un autre processus parent, "global". Tous les processus de tabulation sont des processus enfants de celui-ci (aka "processus de travail" dans le langage Windows), et ils partagent tous la mémoire de processus via le parent. Cela est également vrai si vous ouvrez une nouvelle fenêtre. Ainsi, bien que Chrome utilise largement les processus enfants avec un parent partagé, ses onglets sont particulièrement vivants et robustes, l'inconvénient est l'état du processus de partage. En d'autres termes, la seule façon de supprimer les informations d'identification BasicAuth mises en cache de Chrome est de fermer toutes les fenêtres Chrome, toutes les dernières. La fermeture de l'onglet seul n'aidera pas .

    • [~ # ~] ie [~ # ~] : le modèle tab/process est identique (ou similaire) à Chrome ... à une exception près. Par par défaut, IE ouvre également tous les onglets dans un enfant du processus parent. (En fait, ce n'est pas précis à 100% - certains onglets partagent un processus enfant avec d'autres onglets - mais cela n'a pas d'importance en réalité). Cependant, si vous ajoutez "-NoFrameMerging "à la ligne de commande IE, cela créera un tout nouveau processus IE parent. La différence ici est que vous pouvez par exemple créer une nouvelle fenêtre parent juste pour vous connecter à votre routeur, puis fermez juste cette fenêtre lorsque vous avez terminé. Cela efface votre cache BasicAuth, sans toucher à aucune autre fenêtre ouverte IE IE. ( Remarque: il est en fait possible de le faire avec Chrome aussi! Il est beaucoup plus complexe, cependant, et vous oblige à créer un autre profil de navigateur sur votre machine.)

  • Si vous utilisez des applications sensibles, par ex. applications bancaires - TOUJOURS SE DÉPLACER EXPLICITEMENT ET FERMER [~ # ~] toutes [~ # ~] NAVIGATEUR WINDOWS. Cette partie est un peu plus compliquée, mais beaucoup de dépendances étaient déjà couvertes ci-dessus.

    MENACE: spectateur malveillant Le verrouillage de votre ordinateur, comme ci-dessus, aurait du sens, mais il n'est pas nécessaire de faire un compromis avant. Déconnectez-vous.

    Délai d'expiration de la session: De plus, les applications les plus sensibles (par exemple bancaires) devraient implémenter une certaine forme de délai d'inactivité automatique, donc si vous sortez l'après-midi, votre session mourra automatiquement à un moment donné. Cela pourrait ne pas aider avec cette menace, car le spectateur malveillant peut simplement sauter sur votre ordinateur si vous sortez pendant 4 1/2 minutes pour remplir votre café.

    MENACE: Vol de cookie de session

    Espérons que les applications sensibles empêchent activement cela, avec par exemple HTTPS, IDS, détection de géo/fraude, etc. Cela dit, il est toujours logique de fermer cette "fenêtre d'opportunité", juste au cas où - défense en profondeur, et tout ça.

    Délai d'expiration de la session: comme précédemment, les applications les plus sensibles (par exemple bancaires) devraient implémenter une certaine forme de délai d'inactivité automatique et aideront minimiser cette menace également. Cependant, même si vous savez pertinemment que cette application implémente correctement les délais d'inactivité, il y a encore une fenêtre d'opportunité pour l'attaquant. Cela dit, dans une application relativement sécurisée, ce n'est pas vraiment une menace.

    MENACE: Cross Site Request Forgery (CSRF)

    C'est celui dont vous devez vous inquiéter.

    Supposons que vous êtes connecté à votre banque. Dans la même fenêtre, dans un onglet différent, vous parcourez un site Web douteux. Lorsque vous consultez ce site Web, il peut être en train de tester subrepticement divers sites bancaires bien connus, pour voir si vous êtes connecté à l'un d'eux. Si vous l'êtes, il montera l'attaque CSRF (tous les sites bancaires ne sont pas vulnérables à cela, mais beaucoup le sont toujours). CSRF'd !

    D'accord. Maintenant, dites que vous êtes plus intelligent que cet autre gars, et ne parcourez pas les sites suspects en même temps que votre site bancaire est ouvert. Ainsi, après avoir terminé sur votre banque, vous fermez soigneusement l'onglet. Seulement alors ouvrez-vous un nouvel onglet pour naviguer sur le site douteux. Eh bien, le problème est que vous êtes toujours connecté et que vous le serez pendant un certain temps (généralement environ 30 minutes, mais cela pourrait être aussi peu que 10 ou autant qu'une heure ...). CSRF'd !.

    (Notez que le délai d'expiration de la session ici aide, en raccourcissant la fenêtre d'opportunité, mais il y a toujours une chance que cela se produise dans la fenêtre).

    Hmm. Eh bien, je sais, ouvrons une nouvelle fenêtre de navigateur! Utilisez-le pour le travail bancaire, puis à nouveau FERMER l'onglet et ouvrez-en un nouveau pour les sites de logiciels malveillants avec lesquels j'aime jouer. Oups, consultez la section ci-dessus sur l'authentification de base - votre choix de navigateur est important.

    Sauf si vous utilisez "navigation privée/privée" ou le "-NoFrameMerging "indicateur pour IE, vous êtes toujours dans la même famille de processus, et cette session encore ouverte sera partagée entre toutes vos fenêtres, au moins jusqu'à ce que le serveur atteigne le délai d'inactivité. Supposons il n'a pas encore été coopté. CSRF'd !

    D'accord, un de plus, juste un. J'ai lu ce post trop long quelque part, sur la façon dont je dois toujours me déconnecter de mes applications sensibles - donc je le fais juste avant de passer sur mes sites criminels. Malheureusement, l'application "a oublié" de se déconnecter correctement, elle me redirige juste hors de l'application (ou efface mon cookie, ou ...) au lieu de l'invalider sur le serveur ... CSRF'd!


Alors, TL; DR?

  • Si vous vous souciez de votre compte sur ce site: DÉCONNEXION.
  • Si vous vous souciez de votre compte et qu'il utilise l'authentification de base: DÉCONNEXION ET FERMER TOUS LES ONGLETS ET FENÊTRES DU NAVIGATEUR.
  • Si vous ne vous souciez pas de votre compte - peu importe ce que vous faites, alors arrêtez de demander :-).

P.S. Je n'ai pas couvert des choses comme les cookies Flash, les sessions non http et l'authentification Windows intégrée. Trop c'est trop.

89
AviD

Lorsque connexion à un service Web, un cookie est installé dans votre navigateur. Ce cookie a une valeur d'ID unique qui vous identifie lorsque vous utilisez le service Web et, éventuellement, lorsque vous revenez plus tard. Si, d'une manière ou d'une autre *, cet identifiant a été volé, la personne qui le possède pourrait, éventuellement, utiliser votre compte comme s'il était vous.

Déconnexion, généralement, invalide cet identifiant pour vous et l'adversaire. Aucun de vous ne pourra utiliser l'identifiant pour dire au service Web " Bonjour, je m'appelle Angelo Hannes ". Cela a pour effet secondaire malheureux de vous forcer à saisir à nouveau votre nom d'utilisateur et votre mot de passe pour vous connecter.

"Alors, que dois-je faire alors?", Demandez-vous. En fait ça dépend. Certains services Web sensibles (banque, sites Web gouvernementaux, compagnies d'assurance, etc.) ont une courte durée de session, c'est-à-dire qu'ils invalident l'identifiant après 10-15 minutes de non-utilisation du service. D'autres services Web sensibles (boîte de réception e-mail, qui contrôle essentiellement la quasi-totalité de vos autres comptes) n'invalident pas vraiment la session aussi souvent, mais ils appliquent des restrictions d'adresse IP (si vous utilisez la même session à partir d'une adresse IP différente, la session est invalidé).

TL; DR

  • Ordinateur public, paranoïaque supplémentaire, vous pensez que votre session a été compromise, ou vous vous souciez vraiment de ce service? Déconnexion.

  • Ordinateur privé, vous pensez que votre session est sûre et vous ne vous souciez vraiment pas de ce service? Vous pouvez rester connecté.


* Votre session peut être volée en utilisant des problèmes connus dans le service (sans utiliser HTTPS, par exemple) ou certaines vulnérabilités zero-day telles qu'une attaque XSS récemment découverte dans le service, une nouvelle vulnérabilité dans votre navigateur qui divulgue des informations sur les cookies, ou certaines les logiciels malveillants installés sur l'ordinateur que vous utilisez qui volent les informations de session (enfin, dans ce cas, ils auraient déjà volé votre nom d'utilisateur et votre mot de passe).

40
Adi

Je vais essayer de fournir une réponse à cette question d'une manière inverse à celle déjà publiée ci-dessus.

Quels sont les risques associés aux sessions inactives dans les applications Web?

  • Vol de cookie de session via XSS (si la session n'est pas liée à l'IP)
  • Cross Site Request Forgery (sur la session inactive mais toujours authentifiée).
  • Man In The Middle Attacks (à l'aide d'un cookie de session reniflé utilisant SSLStrip ou en raison de divulgations d'informations HTTPS mixtes)
  • Ouvrir le terminal (Vous êtes parti pour une pause déjeuner avec Paypal ouvert à côté de <insérer le nom du cybercriminel aléatoire ici> et êtes revenu pour voir votre compte vide parce que vous ne vous êtes pas déconnecté)

Timeout Comme indiqué précédemment, certaines applications critiques pour la sécurité comme les sites Web bancaires ont des valeurs de timeout faibles, généralement de cinq à dix minutes. Cependant, ces applications ont généralement également des jetons de prévention CSRF de séquencement aléatoire et des IP liés aux sessions. Par conséquent, même si votre cookie est compromis, un attaquant distant ne peut rien y faire si la sécurité a été correctement mise en œuvre.

D'autres sites Web comme FaceBook ne dépassent généralement pas les sessions pour une meilleure facilité d'accès ou de convivialité. Ils prennent cependant en charge la notification de connexion, la liaison IP au cookie. Des applications telles que Gmail ou DropBox prennent en charge 2 étapes SMS Auth pour améliorer davantage la sécurité et rendre le vol de session inutile s'il provient d'un nouveau PC non fiable.

Par conséquent, la seule inquiétude que j'aurais serait de laisser les sessions ouvertes:

  • Terminaux publics (où vous devriez quand même utiliser la navigation privée. Ctrl + Maj + P sur FF)
  • Sites Web avec une mauvaise sécurité (où l'utilisateur est responsable de la préservation de la confidentialité de ses cookies contre les monstres malveillants des cookies là-bas).
11
Rohan Durve

L'une des plus grandes menaces de ne pas se déconnecter est l'utilisation d'un ordinateur public. Selon la configuration du navigateur, la fermeture du navigateur peut ne pas mettre fin à une session. Si l'utilisateur oublie de se déconnecter de son utilisateur du système d'exploitation (ou qu'il ne le peut même pas), quelqu'un d'autre peut accéder à sa webapp. Ce n'est bien sûr pas un cas très probable. Mais les webapps sont souvent accessibles à un large groupe d'utilisateurs et certains utilisateurs peuvent utiliser des ordinateurs publics (universités, écoles, bibliothèques).

4
user31950

Étant donné qu'une session a un délai d'expiration, il ne me reste que peu de temps pour me connecter, après avoir utilisé la webapp.

Ce n'est pas nécessairement vrai. Selon la façon dont le site implémente leur gestion de session, ils peuvent utiliser un délai arbitrairement long et même utiliser des sessions qui survivent au redémarrage du navigateur/du système d'exploitation.

En fin de compte, si vous devez vous déconnecter explicitement ou non dépend de ce qu'est l'application Web. Les sites bancaires implémentent généralement un délai d'expiration très court, les sites de réseaux sociaux implémentent généralement une connexion essentiellement permanente, surtout s'ils sont également des fournisseurs d'identité (OpenID, etc.).

Voler un cookie de session n'est généralement pas facile, mais c'est possible et la déconnexion explicite empêche cela, vous devez généralement vous déconnecter explicitement pour les sites de grande valeur.

4
Lie Ryan

Ne présumez pas qu'un service a un délai d'expiration. Même s'il a un délai d'expiration, un attaquant pourrait simplement collecter votre cookie et l'utiliser avec un script simple qui continue d'envoyer une requête ping au service, d'envoyer votre cookie, d'actualiser l'horodatage "dernière vue". Il existe plusieurs façons pour les propriétaires de sites Web de se protéger contre cela, mais ne faites pas confiance aux propriétaires de sites Web. Voler un cookie n'est pas aussi difficile qu'il y paraît (une recherche sur YouTube peut vous montrer exactement à quel point c'est facile), et votre meilleure protection dans ce cas est en effet de vous déconnecter.

3
jpkrohling

Si vous ne vous déconnectez pas, le cookie de connexion restera valide pendant une période donnée (en fonction de la mise en œuvre), car le serveur (sur lequel l'application Web s'exécute) ne sait pas que vous avez fermé votre navigateur. Si quelqu'un a volé votre cookie, il peut l'utiliser pour se connecter à l'application et même prolonger la validité, car la plupart des implémentations ont une expiration glissante.

1
Kees de Wit

Du point de vue de la sécurité, à mon avis, la réponse est simple. Lorsque vous avez terminé de vous déconnecter du site. Et lorsque vous avez terminé votre navigation, effacez votre cache et supprimez l'historique, etc. Vous pouvez même configurer votre navigateur pour tout effacer lorsque vous fermez le navigateur. Laissez aussi peu de traces que possible de ce que vous avez fait.

Et s'il vous plaît ne cliquez pas sur les pop-ups ou les liens amusants dans les e-mails. Méfiez-vous des redirections du site où vous pensez être vers un autre site.

0
AquaAlex