Faiblesses de la sécurité en 3 temps

10

J'ai lu de la littérature sur la sécurité, en particulier la sécurité / le cryptage des mots de passe, et il y a une chose que je me demandais: la règle des 3 temps est-elle une solution parfaite à la sécurité des mots de passe? Autrement dit, si le nombre de tentatives de mot de passe est limité à un petit nombre, après quoi toutes les demandes d'authentification ne seront pas honorées, cela ne protégera-t-il pas les utilisateurs contre les intrusions? Je me rends compte que l'accès ou le contrôle de quelque chose ne signifie pas toujours passer par le système d'authentification, mais cette fonctionnalité ne rend-elle pas les attaques par dictionnaire / force brute obsolètes? Y a-t-il quelque chose qui me manque?

prélique
la source
3
Cette question aurait pu être mieux posée à la sécurité pour référence future.
maple_shaft
1
Comme je l'ai trouvé, il y a toujours un endroit plus approprié à poser. Merci cependant, je vais essayer de m'en souvenir.
prélique

Réponses:

13

Oui, cela rendra les attaques par dictionnaire impossibles via le mécanisme de connexion . (Cela ne signifie toutefois pas grand-chose s'ils obtiennent l'accès à la base de données. Pour des raisons de sécurité, vous devrez hacher et saler correctement les mots de passe.)

Il permet également la possibilité d'une attaque DOS contre un certain utilisateur. Imaginons que je veuille vous empêcher de vous connecter. Tout ce que je dois faire est d'exécuter trois tentatives de connexion bidon sur votre compte, puis de recommencer chaque fois que vous faites tout ce qui est nécessaire pour réinitialiser la connexion. Traiter ce problème est un peu plus délicat.

Mason Wheeler
la source
1
Merci! Par curiosité, quelle serait une approche pour résoudre ce dernier problème que vous avez décrit? Pour un exemple réel, des tonnes de forums en ligne utilisent le nom d'utilisateur public comme identifiant de connexion (par opposition à un e-mail joint à l'acte ou autre), ce qui signifie que je peux voir ce que chaque utilisateur utilise pour se connecter. Qu'est-ce qui m'empêche de verrouiller chaque utilisateur de son compte? Un bon administrateur? Il semble qu'il serait trivialement facile de verrouiller chaque utilisateur du site.
prélique
@prelic: Eh bien, pour résoudre ce problème, j'implémenterais quelque chose comme "si une certaine adresse IP fait trop de tentatives de connexion invalides, bloquez-les". Cela arrêtera le scénario que vous avez mentionné, mais cela ne résoudra pas une tentative de piratage sérieuse comme un botnet. Pour cela, vous avez besoin d'une sécurité renforcée.
Mason Wheeler
4
La solution habituelle est de limiter le taux de tentatives venant d'un utilisateur donné à partir d'une adresse IP fixe à 5 par minute. Ce n'est pas parfait, mais en général, vous ne créez pas de problèmes aux autres utilisateurs, sauf si vous êtes derrière le même proxy
Andrea
Une autre approche consiste à présenter un captcha après 2 tentatives de connexion infructueuses à partir de la même IP - mais ensuite, un attaquant déterminé peut simplement louer un turk mécanique captcha à cet effet, et il est assez difficile de trouver un bon captcha qui garde réellement les machines en dehors.
tdammers
3

Je conviens également que cela rend les attaques par dictionnaire moins efficaces comme moyen d'accéder à un compte sans l'autorité appropriée. Toutefois:

  • Cette approche pourrait transformer une attaque de dictionnaire en une attaque DOS contre le système empêchant l'accès si elle est mal mise en œuvre. Par exemple, un serveur peut être inondé de tentatives d'authentification. Une solution consiste à faire en sorte que le service d'authentification contrôle le flux des accès ultérieurs à un compte verrouillé. Par exemple, si un compte est verrouillé, présentez un délai avant chaque nouvelle tentative de connexion. On pourrait toutefois mettre un délai entre une tentative de connexion et un «accès refusé», ce qui maintient la porte ouverte à une attaque par déni de service distribué où un attaquant lance de nombreuses tentatives d'authentification simultanées.

  • Comme cela a été mentionné dans l'autre réponse, cela pourrait également transformer une attaque de dictionnaire en un DOS brut contre le propriétaire légitime du compte attaqué. Les moyens d'atténuer l'impact sur le propriétaire légitime incluent:

    • Ralentir une exécution sur les noms d'utilisateur en ne fournissant aucun indice sur la question de savoir si c'est le nom d'utilisateur ou le mot de passe qui est faux. Cela rend les attaques où le coupable devine les noms d'utilisateur plus visibles pour les administrateurs et moins efficaces.
    • Au lieu de verrouiller un compte après un nombre fixe de tentatives infructueuses, verrouillez simplement ce mode d'authentification. En d'autres termes, exiger qu'un utilisateur dont le compte est attaqué s'authentifie en utilisant une méthode différente (peut-être plus impliquée, mais moins facilement attaquée). Un bon exemple est la façon dont un téléphone Android exigera qu'un utilisateur utilise ses informations de connexion Google après avoir échoué à s'authentifier à l'aide d'un schéma de déverrouillage d'écran ou d'un code PIN. En théorie, cela revient à demander à un utilisateur attaqué de demander le déverrouillage de son compte, mais cela ne nécessite aucune intervention immédiate d'un administrateur système.
    • Au lieu de verrouiller un compte (ou en plus de verrouiller un compte, pour ce mode d'authentification particulier - voir ci-dessus), le verrouillage tente de s'authentifier à partir de l' emplacement d' où provient l'attaque. Par exemple, si l'authentification est effectuée via un nom d'utilisateur et un mot de passe, sur le réseau, après trois tentatives d'authentification infructueuses, vous pouvez empêcher d'autres tentatives d'utilisateurs de la même IP ou du même sous-réseau de se connecter avec un nom d'utilisateur ou un mot de passe. Lorsqu'il y a de fortes chances que plusieurs utilisateurs (y compris l'attaquant) puissent utiliser la même IP ou le même sous-réseau, vous pouvez simplement désactiver l'authentification par nom d'utilisateur / mot de passe pour l'IP ou le sous-réseau pendant une période de temps, laissant les méthodes d'authentification plus impliquées ouvertes pour les innocents utilisateurs à proximité de l'attaquant.
  • Si votre peur pénalise par inadvertance un utilisateur oublieux comme s'il était un attaquant, au lieu de contrôler le flux des tentatives de connexion infructueuses après un nombre fixe de tentatives infructueuses, vous pouvez utiliser la fréquence des tentatives de connexion comme preuve qu'un compte est attaqué. Par exemple, si vous voyez 10 tentatives d'authentification en l'espace d'une seconde, vous pouvez soit utiliser l'une des méthodes ci-dessus pour empêcher d'autres tentatives d'authentification similaires. Alternativement, vous pouvez utiliser ce flux rapide de tentatives de connexion comme signal pour commencer à contrôler le flux. Cette méthode devient de plus en plus populaire sur les forums, alors qu'après un certain nombre de tentatives de connexion infructueuses d'une adresse IP particulière, cette adresse IP ne peut pas s'authentifier pendant une courte période.

  • Enfin, un bon moyen d'empêcher un utilisateur d'être ciblé à plusieurs reprises par une attaque DOS est de lui permettre de réinitialiser à la fois son mot de passe et son nom d'utilisateur . En d'autres termes, traitez le nom d'utilisateur et le mot de passe comme des secrets. Lorsque le nom d'utilisateur est utilisé ailleurs (par exemple dans un forum, si le nom d'utilisateur est le nom d'affichage de l'utilisateur), il suffit de traiter ce nom d'affichage comme quelque chose de distinct. Cette approche est généralement utilisée par les réseaux sociaux où le nom d'utilisateur utilisé pour l'authentification est son adresse e-mail - quelque chose qui peut être changé, mais qui est rarement partagé - tandis que le nom d'affichage utilisé sur le site est quelque chose de défini par l'utilisateur qui peut ou non. être changé.

Quoi qu'il en soit, j'espère qu'une ou une combinaison de ces approches vous sera utile.

ctt
la source